Kiểm tra mã mẫu div () và phép chia & mod kết hợp. Tôi đã biên dịch những thứ này bằng gcc -O3, tôi phải thêm lệnh gọi doNothing để ngăn trình biên dịch tối ưu hóa mọi thứ (đầu ra sẽ là 0 cho giải pháp chia + mod).
Mang nó theo một hạt muối:
#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);
}
Đầu ra: 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);
}
Kết quả đầu ra: 25
double
(mục cuối cùng của bạn) đối với tôi dường như là một ý tưởng tồi, bạn sẽ kết thúc với những con số không xếp hàng và có thể khiến bạn mất hiệu suất và kích thước thực thi (luôn là một vấn đề đối với tôi trên một số hệ thống nhúng nhất định).