블로그 이미지
플래시로 밥먹고 살고 있습니다... 하지만 여긴 플래시 전문 블로그가 아닌 그냥 개인 블로그랍니다
미나토

Recent Comment

calendar

      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29      
  • 56,002total
  • 9today
  • 173yesterday
2009/10/14 10:02 Flash Platform



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


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 타입 변환을 하면 속도가 두배로 빨라지지만 상황에 맞게 쓰자...




크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토
2007/05/17 13:26 Flash Platform
trace(int(2.6)) // 2
trace(uint(2.6)) // 2

num >= 0 일 때,
int(num) = Math.floor(Number(num)) 과 같은 결과를 가진다. 간혹 Math.round 로 착각하는 실수를 하지 말자...


num < 0 일 때,
uint(num) = 4294967295 가 나오니 주의할 것.


trace(uint(undefined)) // 0
trace(uint(null)) // 0
trace(uint(true)) // 1
trace(uint(false)) // 0
trace(uint(NaN)) // 0
trace(uint("")) // 0

null 또는 Boolean 값이 들어왔을 때의 결과는 위와 같다. NaN이라고 나올거라 생각하는 실수 또한 주의 할 것...(int 도 마찬가지이다)


하나 더,

드로잉 수치에 int, uint 를 쓰면 오류는 안생기나 버그가 생길 가능성이 크다... 내림값이라 소숫점을 다 버려버리기 때문에 픽셀이 안맞을 수 있기 때문이다.
크리에이티브 커먼즈 라이선스
Creative Commons License
posted by 미나토