div () 및 결합 된 division 및 mod를 테스트하는 샘플 코드. 나는 이것을 gcc -O3로 컴파일했고, 컴파일러가 모든 것을 최적화하는 것을 막기 위해 doNothing에 대한 호출을 추가해야했다.
소금 한 알과 함께 가져 가십시오.
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
extern doNothing(int,int); // Empty function in another compilation unit
int main() {
int i;
struct timeval timeval;
struct timeval timeval2;
div_t result;
gettimeofday(&timeval,NULL);
for (i = 0; i < 1000; ++i) {
result = div(i,3);
doNothing(result.quot,result.rem);
}
gettimeofday(&timeval2,NULL);
printf("%d",timeval2.tv_usec - timeval.tv_usec);
}
출력 : 150
#include <stdio.h>
#include <sys/time.h>
#include <stdlib.h>
extern doNothing(int,int); // Empty function in another compilation unit
int main() {
int i;
struct timeval timeval;
struct timeval timeval2;
int dividend;
int rem;
gettimeofday(&timeval,NULL);
for (i = 0; i < 1000; ++i) {
dividend = i / 3;
rem = i % 3;
doNothing(dividend,rem);
}
gettimeofday(&timeval2,NULL);
printf("%d",timeval2.tv_usec - timeval.tv_usec);
}
출력 : 25
double
(마지막 항목)을 사용하는 것은 나에게 나쁜 생각처럼 보인다는 점을 추가하고 싶습니다. 정렬되지 않은 숫자로 끝날 것이고 성능에 비용이들 수 있습니다. 실행 가능한 크기 (특정 임베디드 시스템에서 항상 문제였습니다).