2012-06-18 2 views
2

내 테스트 코드에서 복잡한 계산에 사용 된 CPU 시간은 CX_LIMITED_RANGE ON/OFF 사이에 차이가 없습니다. CX_LIMITED_RANGE ON/OFF의 차이점, #pragma STDC CX_LIMITED_RANGE ON의 사용시기 및 방법 및 기본값 인 #pragma STDC CX_LIMITED_RANGE OFF을 사용할 때의 차이점은 무엇입니까?CX_LIMITED_RANGE ON/OFF 사용 방법

감사합니다.

void use_CX_LIMITED_RANGE() 
{ 
    double complex z1 = 3.0 + I * 4.0; 
    double complex z2 = 1.0 + I * 2.0; 

#pragma STDC CX_LIMITED_RANGE ON 

    clock_t c1 = clock(); 
     double complex z3; 
     for (int i = 0; i < 100000; ++i) { 
      z3 = cabs(z1 * z2); 
     } 
     clock_t c2 = clock(); 
     printf("CX_LIMITED_RANGE ON %lu cpu clock\n", c2 - c1); 
     printf("|z1 * z2| = %f + %fi\n", creal(z3), cimag(z3)); 

     printf("\n"); 

    #pragma STDC CX_LIMITED_RANGE OFF 

     c1 = clock(); 
     for (int i = 0; i < 100000; ++i) { 
      z3 = cabs(z1 * z2); 
     } 
     c2 = clock(); 
     printf("CX_LIMITED_RANGE OFF %lu\n", c2 - c1); 
     printf("|z1 * z2| = %f + %fi\n", creal(z3), cimag(z3)); 
    } 

답변

1

은 적이없이 운, C++에서 GCC와 함께이 pragma를 사용하려고 노력 '. -fcx-limited-range로 5 배의 성능 향상을 얻지 만 코드에서 지정하면 효과가 없습니다. GCC의 C99 상태 페이지에 따르면 아직 표준 pragma를 지원하지 않습니다.

http://gcc.gnu.org/c99status.html