티스토리 뷰


아시는 분들도 계시겠지만 ^^; 그냥 생각나서 테스트만 했봤습니다..
for문을 2번 돌려야 하는 경우가 종종 발생하는데 한번에 돌리면 더 빨라 질까라는 생각이 들었습니다.
그래서 간단하게 테스트를 해봤습니다... 물론 for문은 고정한 횟수를 반복하는 것이 아닌 둘다 반복횟수를 동적으로 받을 수 있다는 가정하에 테스트 한 것입니다.

var t = new Date();
 var start = parseInt(t.getTime(),10);
 var tArray = [];
 for(var i = 0; i < 10000*20; i ++){
  if(i%20 == 0){
   tArray.push("row<br/>");
  }
  tArray.push("cols|<br />");  
 }
 var end = parseInt(new Date().getTime(),10);
 document.write(end - start);

//output ->718


VS


var t = new Date();
 var start = parseInt(t.getTime(),10);
 var tArray = [];
 for(var i = 0; i < 10000; i ++){
  tArray.push("row<br/>");
  for(var j=0;j < 20;j++){
   tArray.push("cols|<br />");  
  }
 }
 var end = parseInt(new Date().getTime(),10);
 document.write(end - start);

//output 641

같은 결과를 얻기 위해서는 첫번째 for문이 돌고 난 다음 sub for문이 도는 것이어서..첫번째 for문에 실행되야 하는 것들을 인식해야 하기 때문에  첫번째 시료처럼 조건이 들어가게 되겠죠? 안들어 갈수도 있을까요? ^^;;

그래서 테스트를 해봤더니...
조건이 들어간 것이 많이 느린게 보이네요..

for문이 2번 들어가더라도 조건이 없는 것이 더 빠르군요..위의 결과대로라면
가능하다면 if문으로 규칙적인 확인을 했던 것들은 2중 for문으로 만드는 것이 더 유리 할 수도 있다는 이야기네요..

내 생각엔 1번이 더 빠를꺼라고 생각했었는데...


덧붙이자면..

for문으로 반복해야할 횟수가 고정적이라면 단축시키는 팁이 존재합니다..
가령 예를 들면.

var t=[];
for(var i = 0 ; i < 20; i++) t.push(i);

이런 식의 for문은..

var t=[];
for(var i = 0 ; i < 20; i++) {t.push(i);t.push(i++);}


같은 식으로 for문의 반복 획수를 줄여서 이득을 볼 수 있는 팁들이죠..


신고
댓글
  • 프로필사진 이태호 일전에 우야꼬님인가,, 영구기님 블로그 인가 몰라도 암튼 간단한 for문 튜닝법을 본적이 있었는데 첨 보고 무릎을 쳤다죠. ㅎㅎ
    곰곰히 생각해보면 고정관념 문제인것 같습니다. for문도 결국 function이니까 function call 동작을 한루프에 하나만 줄여도 성능향상이 있다는 건 당연할텐데 말이죠.

    이제 10이 정식출시되면 Flash에서도 사람들이 3D연산이나 비트맵 필터링을 많이 사용하게 될테니 이런 팁은 큰 효력을 발휘할 것 같습니다. 지금도 그렇지만 앞으로는 액션코딩에서 메모리관리나 성능관리가 더욱 큰 이슈가 될것 같습니다.

    상상력. 기존의것에 대한 탈피. 역시 개발은 예술이라니까요.

    요새 잠깐 빈시간에 S전자디자인센터에서 Flash 단기알바중인데요, AS3와 플레이어10이 버젓이 존재하는 시대에 확실히 Flash를 그냥 드로윙,에니메이션툴이라고 생각하더군요. 라이브러리 노가다 작업중인데 죽겠습니다. 육체보단 정신적인 폐해가 크네요.ㅎㅎ
    2008.10.08 18:04 신고
  • 프로필사진 Favicon of http://lovedev.tistory.com BlogIcon Kevin lovedev 와...라이브러리 노가다 캬...
    오랜만에 듣는군요..
    어떤 노가다를 하는지 모르겠지만.. 정성을 들여서 하세요 ㅋㅋㅋ :)
    나중에 다...태호님의 얼굴이 됩니다.
    좋은 하루 보내요~
    2008.10.08 20:30 신고
댓글쓰기 폼