'for each in'에 해당되는 글 1건

  1. [2007/06/18] for each in VS for in (14)

for each in VS for in

[FLASH/Tutorials]
// Coding AS3.0
// for in
var obj:Object = {a:1, b:2, c:3};
for (var i in obj)
{
   trace (obj[i]);
}
trace("------------------")
// for each in
var obj1:Object = {a:1, b:2, c:3};
for each (var j in obj1)
{
   trace (j);
}
// output
3
1
2
------------------
3
1
2

for each in operator는 속성 값에 바로 접근을 한다. 그러므로 속성에 대해서 알 필요가 없을 경우 사용하기 편리한 operator라고 볼 수 있다.
그럼 여기서 '속도 테스트'를 한번 해보자. for each in 문이 당연 빠르겠지만....

// Coding AS3.0
stage.addEventListener (MouseEvent.CLICK, onClick);
//
function onClick (e:MouseEvent)
{
   trace ("## onClick");
   //
   var loop = 100000;
   var obj:Object = {a:1, b:2, c:3};
   //
   var objStartTime = new Date().getTime();
   for (var a:uint = 0; a<loop; a++)
   {
       for (var i in obj)
       {
           var temp1 = obj[i];
       }
   }
   var objEndTime = new Date().getTime();
   trace ("for in : delayTime = ", objEndTime - objStartTime);
   //
   trace ("------------------");
   //
   var obj1:Object = {a:1, b:2, c:3};
   var obj1StartTime = new Date().getTime();
   for (var b:uint = 0; b<loop; b++)
   {
       for each (var j in obj1)
       {
           var temp2 = j;
       }
   }
   var obj1EndTime = new Date().getTime();
   trace ("for each in : delayTime = ", obj1EndTime - obj1StartTime);
   trace("")
}
// output
## onClick
for in : delayTime =  130
------------------
for each in : delayTime =  50

## onClick
for in : delayTime =  210
------------------
for each in : delayTime =  50

## onClick
for in : delayTime =  110
------------------
for each in : delayTime =  50

역시나 당연한 결과라 생각된다. for in 문에서 사용된 obj[i]'[] operator' 로서 계산을 해야하는 코딩이다. 속성의 값에 바로 접근을 하기 위해서는 for each in 문을 사용하는 것이 좋다.
2007/06/18 14:43 2007/06/18 14:43