간만에 팁을 올립니다. ㅎㅎ
무심코 다른 언어 습관때문에 숫자형을 문자형으로 바꿀 때 toString() 을 썼는데
소연이가 toString() 대신에 String() 을 쓰길래
어?
해서 한 번 테스트를 해보았더니
생각보다 꽤 큰 차이를 보이더군요.
일단 테스트 코드갑니다.
|
테스트 코드는 위와 같고 제 컴퓨터에서 테스트한 결과들을 보여드리겠습니다.
var n: Number = 150
toString() 43ms
String() 32ms (34% faster)
var n: Number = 49394929
toString() 51ms
String() 36ms (41% faster)
var n: Number = 23.20154
toString() 231ms
String() 221ms (4.5% faster)
var n: Number = -1548
toString() 45ms
String() 34ms (32% faster)
var n: Number = NaN
toString() 29ms
String() 17ms (70% faster)
var n: int = 1823422;
toString() 54ms
String() 35ms (54% faster)
var n: int = -3422;
toString() 52ms
String() 33ms (57% faster)
var n: uint = 548422;
toString() 53ms
String() 34ms (55% faster)
오옷!!!
전체적으로 String()이 약 20~50% 빠른걸 알 수 있습니다.
도대체 toString() 내부와 String() 내부는 어떻게 다르기에 이렇게 다른걸까요?
흠...
어쨌든 앞으로는 String() ㄱㄱ
'ActionScript 3.0 > 팁 & 노하우' 카테고리의 다른 글
Behind of Flash - 플래시의 숨겨져있는 사실들 (28) | 2011.04.18 |
---|---|
Flash Builder 실행시킬 때 원하는 Workspace 지정해서 실행시키기 (1) | 2011.03.31 |
[AS3] n.toString() vs String( n ) ? (15) | 2010.11.18 |
[Tip] 자주 쓰는 반복문 (16) | 2010.07.28 |
[Flex] Flash Builder 4 Compiler Options (2) | 2010.07.25 |
[AS3] Flash Builder에서 Flash Player 10.1 설정하기 (16) | 2010.07.01 |
-
-
웅스 2010.11.09 18:20
지금까지 toString 말고 String() 으로 작업하고 있었는데, 그게 좋은거였나봐요 으흐흐..
언제나 야꼬님의 글 감사하게 보구 가요^^/ -
-
찬익 2010.11.10 07:31
커스텀 클래스의 경우, toString()은 각 클래스마다 구현해야 동작해서 좀 귀찮기도 해요. 반면 (개인적으로는) String()에 비해 좀 더 잘 읽히기 때문에 아직까지는 주로 toString()을 쓰고 있어요.
반면 Number 클래스의 경우에는 타 언어에서도 가끔 String()과 같이 캐스팅해서 쓰는 경우가 있어서 그런지, String()을 더 자주 쓰게 되네요. -
-
hika 2010.12.21 23:24
그러니까 형() 구문은 형치환구문이라고 해서 어셈블리를 까보면 직접 형을 캐스팅하는 걸로 해석이 되어있어.
반면에 toString()은 말 그대로 메서드를 호출하는 구문이 되어 함수를 실행한 결과를 반환하지.
오히려 함수호출이 생각보다 부하가 안걸리네! 훌륭한걸 이라고 칭찬해줄 지경 ^^ -
언어를 디자인한 사람의 설계의도를 읽어야 하는 부분 같은데..
toString은 타입케스팅 용도가 아니라 오브젝트를 설명하는 용도로 설계된거 거든.
그래서 보통은 toString을 오버라이딩 해서 해당 클래스의 메타데이타를 문자열 형태로 반환하도록 구현하지.
(Person instance).toString(); // "Name: wooyaggo, Age: 31, Class:World Class!!"
대강 요런식으로. 무엇을 반환할지는 개발자의 몫!
Number 클래스의 경우엔 그 구현이 "Numeric Value=>String"의 구현일거고, 이경우엔 잘 맞는 구현이지.
내 생각엔 toString을 타입 캐스팅 용도로 사용한다면, 애써 설계해서 상속체인 맨 꼭대기에 넣어둔 설계자가 땅을치며 후회할일 같네 ㅋㅋ
간만에 와서 안부도 안물어보고 참견질 ㅎㅎ