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... 어쩔꺼야...
저작자 표시 비영리 동일 조건 변경 허락
신고
  1. 겨울나기 2009.10.22 16:42 신고

    원래 Math가 성능이 딸리나요?ㄷㄷㄷ;
    저렇게까지 차이난다면 약간 문제가 있을수도 있다고 생각이 드는데 말인데요..ㅋㅋ

    • Favicon of http://wooyaggo.tistory.com 우야꼬  2009.11.16 01:58 신고

      Math는 느리기로 유명하죠.
      그래도 대부분 자주쓰는 값들은 const로 미리 계산해놓고 가져다 쓰는게 편하죠.

  2. Favicon of http://asnike.com 니케 2009.10.26 09:27 신고

    삼항연산자를 두번 연달아 쓰기도 하는군요; ㅎㅎ

  3. Favicon of http://jjongjjong.com 쫑쫑쫑 2009.10.28 00:50 신고

    메쓰 드럽게 느림 ㅠ.,ㅠ

  4. Favicon of http://blog.flashplatform.kr 검쉰 2009.10.29 13:07 신고

    무식한 Math... ㅋ
    누가 만들었을까. ㅋ

    • Favicon of http://wooyaggo.tistory.com 우야꼬  2009.11.16 01:59 신고

      머 어쩌겠샤 분야보다 범용을 위해서 만든건데 그럴수 밖에...
      (가끔 help보면 오타도 많더라... 얼마나 고생하면서 만들었을까... 커흑)

  5. Favicon of http://hangunsworld.com Han Sanghun 2009.11.02 17:43 신고

    편리함에는 그만한 대가가 따르는 법이지 ㅋ

  6. 금돌 2009.11.25 16:13 신고

    ㅋㅋㅋ

  7. Sait2000 2013.01.22 16:31 신고

    아무리 Math가 느려도
    삼각함수를 ActionScript로 구현하면
    속도가 굉장해지겠죠...

+ Recent posts

티스토리 툴바