출처: 우야꼬의 Adobe RIA


0~1 사이의 값만을 유지해야 한다면 보통은 다음과 같이 사용합니다.

function b( $b: Number ): Number
{
     if( $b < 0 )
          $b = 0;

     if( $b > 1 )
          $b = 1;
    
     return $b;
}

글쵸?

0보다 작다면 0을

1보다 크다면 1을 대입해서 사용하는 것이죠.

근데 저는 기능에 비해서 코드가 너무 길어서 저는 아래와 같이 삼항식을 사용합니다.

function a( $a: Number ): Number
{
     $a = $a < 0 ? 0 : $a > 1 ? 1 : $a;
    
     return $a;
}

좀 Geek스럽지만 소스가 한줄로 줄여지니 다른 코드 사이에서 쓰일수도 있어서

자주 애용합니다.

아래는 퍼포먼스 테스트입니다. 과연 결

function a( $a: Number ): Number
{
     $a = $a < 0 ? 0 : $a > 1 ? 1 : $a;
    
     return $a;
}
function b( $b: Number ): Number
{
     if( $b < 0 )
          $b = 0;
    
     if( $b > 1 )
          $b = 1;
   
     return $b;
}
function c( $c: Number ): Number
{
     $c = Math.min( Math.max( $c, 0 ), 1 );
    
     return $c
}

// make test sample for using same to both
var i: int = 0xFFFFFF;
var arr: Array = [];
while( i-- )
{
     arr.push( Math.random() * 3 - 1 ); // -1~2
}

// test a()
i = 0xFFFFFF;

var time: int = getTimer();

while( i-- )
{
     a( arr[ i ] );
}

trace( getTimer() - time );

// test b()
i = 0xFFFFFF
time = getTimer();
while( i-- )
{
     b( arr[ i ] );
}

trace( getTimer() - time );

// test b()
i = 0xFFFFFF

time = getTimer();

while( i-- )
{
     c( arr[ i ] );
}
trace( getTimer() - time );



각 a(), b(), c() 의 테스트 결과는 다음과 같습니다.

a - 1751

b - 1684

c - 4894 (역시 기대를 져버리지 않는 Math)

오... 생각보다 느리지 않습니다.

(참고로 if + if 나 if + else 나 비슷비슷합니다)

애용하는데 있어서 확신이 생겼네요 ㅋㅋㅋ


저작자 표시 비영리 동일 조건 변경 허락

번호 제목 글쓴이 날짜 조회 수
160 jpgraph 1.20.4 에서 한글 폰트 사용 [16] Myip 심걸 2011.07.28 14548
159 [AS3] Integer.reverseBytes() of Java [1] Myip 심걸 2011.07.28 12794
158 [AIR] AIR를 포함하는 ASDoc 만들기 [2] Myip 심걸 2011.07.28 12901
157 [AIR] EncrytpedLocalStore 저장 위치 Myip 심걸 2011.07.28 12614
156 [AS3]trace 를 지우거나 주석화하지 않고 비활성화 시키기 [2] Myip 심걸 2011.07.28 13068
155 PHP코딩팁. include와 return의 특성 Myip 심걸 2011.07.28 12947
154 [PHP] 배열의 활용 Myip 심걸 2011.07.28 12787
153 php 기본 문법. php group 에서 시키는 대로 하자 Myip 심걸 2011.07.28 14830
152 인스턴스의 타입체크하기 Myip 심걸 2011.07.28 12717
151 Flash Builder에서 TODO, FIXME 사용하기 [23] Myip 심걸 2011.07.28 13046
150 [Flex] Flash Builder 4 Compiler Options [15] Myip 심걸 2011.07.28 13625
149 [AS3] 인스턴스의 클래스와 패키지명까지 알아오기 [1] Myip 심걸 2011.07.28 12794
148 javascript로 난수 발생 Myip 심걸 2011.07.28 12652
147 webkit계열에서 css문건내 @charset 선언문제 Myip 심걸 2011.07.28 12708
146 [AS3] 인스턴스 자동 선언 옵션은 반드시 Off 합시다 [35] Myip 심걸 2011.07.28 19793
» [AS3] 최대, 최소값 자르기 두가지 방법 Myip 심걸 2011.07.28 12694
144 [AS3]최적화 코드 Myip 심걸 2011.07.28 12660
143 [AS3] Flash Player 10.1 활용하기 [4] Myip 심걸 2011.07.28 12923
142 [FF3].html post .php 데이터 손실 Myip 심걸 2011.07.28 12553
141 new 안하고, 전역변수 안쓰기. class, static Myip 심걸 2011.07.28 12655