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 나 비슷비슷합니다)

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










































Math... 어쩔꺼야...

+ Recent posts