다음과 같은 코드로 속도 테스트를 해보자


var index:int = - 9999999;

var st:uint = getTimer();

var n:Number;
while(index < 0)
{
n = Number("12345");
index ++;
}

trace(getTimer() - st);

///////////////
1204


var index:int = - 9999999;

var st:uint = getTimer();

var n:Number;
while(index < 0)
{
n = parseFloat("12345");
index ++;
}

trace(getTimer() - st);

//////////////////////
2453


결과를 놓고 보면 Number 가 parseFloat 에 비해 두배 정도 빠른 속도를 보이기에 무조건 Number 타입을 쓰는 것이 좋아 보이지만 다음과 같은 차이가 있다


trace(Number(""))
////////////////
0;

trace(parseFloat(""))
///////////////
NaN;



이유는 Number 함수가(Number class 가 아니다) 다음과 같은 반환값을 가지기 때문이다.

Number

입력 유형/값예제반환값
undefined Number(undefined) NaN
null Number(null) 0
true Number(true) 1
false Number(false) 0
NaN Number(NaN) NaN
빈 문자열 Number("") 0
숫자로 변환되는 문자열 Number("5") 숫자(예: 5)
숫자로 변환되지 않는 문자열 Number("5a") NaN





요컨데 결론은.....




Number 함수로 Number 타입 변환을 하면 속도가 두배로 빨라지지만 상황에 맞게 쓰자...




Posted by 미나토

댓글을 달아 주세요