728x90
Java의 String.format()과 같은 함수는 Flex에서 StringUtil.substitude()가 있다. 먼저 substitude() 함수를 사용하지 않고 +(플러스) 연산자를 이용하여 구성할 때 코드를 보자.
var index :int = -1; var length :int = 10; Alert.show( "Index '" + index + "' specified is out of bounds.(length:" + totalObjSum + ")" );
다음은 substitude() 함수를 사용할 때의 코드이다.
var index :int = -1; var length :int = 10; Alert.show( StringUtil.substitute( "Index '{0}' specified is out of bounds.(length:{1})", index, totalObjSum ) );
String 값 중 다른 변수가 들어갈 자리에 {0} ~ {N} 을 쓰고 나서 함수 파라미터로 해당 변수를 순서대로 넣어주면 된다.
속도는?
사실 속도는 + 연산자를 사용하는 게 훨씬 더 빠르다. 다음 코드를 실행해보자.
var startDate :Date = new Date(); for( var i:int=0; i<100000; i++ ) { StringUtil.substitute( "Index '{0}' specified is out of bounds.( length : {1} )", 0, 10 ); } var endDate :Date = new Date(); var startDate2 :Date = new Date(); for( var i:int=0; i<100000; i++ ) { StringUtil.substitute( "Index '" + 0 + "' specified is out of bounds.( length : " + 10 + " )" ); } var endDate2 :Date = new Date(); Alert.show( "substitude(100000) : " + ( endDate.getTime() - startDate.getTime() ) + "\n" + "+(100000) : " + ( endDate2.getTime() - startDate2.getTime() ) );
결과는 다음과 같다.
결론
가독성이 중요하고 반복적이지 않는 작업에서는 substitude() 함수를 사용해도 괜찮으나 반복적이고 가독성이 필요 없는 곳에서는 + 연산자를 이용하여 속도를 높이는 게 좋을 것 같다.(사실 가독성이 중요하지 않는 코드는 없지만 속도의 중요성이 더 높을 땐 가독성을 낮춰서 타협을 해야 한다.) 참고로 concat 함수는 +연산자보다 느리다. 게다가 가독성도 좋지 않으니 사용하지 않는 것이 좋다.(Java도 마찬가지)
반응형
'Development > WebApp' 카테고리의 다른 글
[Flex] X, Y 좌표로 컴포넌트 찾기 (HitTest) (0) | 2015.12.14 |
---|---|
[Flex] 개발할 때 주의할 점 중 클래스명이나 이미지명 같을 때 발생하는 문제 (0) | 2015.07.25 |
[Flex] 주의해야 할 int, String 비교 (0) | 2015.04.28 |
[Flex] String타입 "false"를 Boolean타입으로 변환하는 방법 (0) | 2015.04.24 |
[Flex] 개행 문자 문제 (0) | 2015.04.17 |