for문..어느쪽이 빠를까요?
스릉흔다
갑자기 생각나서 질문하나 올려봅니다 ^^;
1. for(var i:Number = 0; i listArray.length; i++){}
2. for(var i:Number = 0;listArray[i]; i++){}
위 둘중에 어느쪽이 빠를까요? ^^a
ㅋㅋㅋ
-
비사벌
참고로 andwhy님의 기법으로바꾸면 1번-810 2번-1254 가나옵니다. andwhy님 좋은 습관을 가지고있음.
-
한
f1을 보면, 수다님이 쓰신 방법을 써야 합니다 ^^;
그 외에도 몇 가지 가이드라인이 있더군요....
엔터프레임이나 셋인터벌등 반복해서 어떤 걸 실행할 때,
함수를 호출하지 말고, 직접 이벤트 핸들러 안에 모든 코드를 선언하는게 더 빠르다... 등.. -
스릉흔드
andwhy님에게 한표
-
희미해
결과가 1번 -1101 2번-1253 정도가 나오고있습니다.
-
나슬
윽 직접 테스트해보니 2번이 20%가 느리군요... 배열첨자는 플래시 파서가 숫자로도 검사하지만 연관배열같은경우가 있기때문에 첨자를 해시테이블로 관리합니다. 해시테이블 참조시간이 20%정도가 더 걸리지 않나 싶네요.
var test:Array=new Array();
for(var i:Number =0;i 900000; i++){
\ttest.push(\test\+i);
}
a.onPress=function (){
\t\tvar s = getTimer() -
꺄홋
전...위쪽에..
var leng = listArray.length;
넣고 변수로 참조.. -
딸기맛캔디
2번이 빠른 걸로 알고 있고 일부러 길이를 변수에 대입하고 쓰고 있는데...
-
이퓨리한나
문제가 약간 이해가 안가는군요. 1번안에는 보통 2번의 listArray[i]처럼 배열을 참조하기위해 순차 카운트를 쓰는것인데 2번같은경우 내부에서 조건을 비교해서 break를 걸어줘야할텐데 둘다 똑같은 목적일수밖에 없어 보이거든요. 속도차이가 날리가 없을텐데요. 어차피 for안에서 var를 선언하는것은 레지스터 변수로 지정되기때문에 둘은 같은 속도일것 같습니다.
-
감추어왔던
똑같지 않나요? 1번도 한번 연산하고 2번도 한번 연산하고.. 근데 우리 사장님(자바 프로그래머)이 보시더니 이런거 신경쓰지 않는게 좋다고..ㅎㅎㅎ
-
시원
1. 배열참조 연산자(맞나?)가 속도가 더 느린걸로 알고 있습니다