Contoh pengujian kode div () dan gabungan divisi & mod. Saya mengkompilasi ini dengan gcc -O3, saya harus menambahkan panggilan ke doNothing untuk menghentikan kompiler dari mengoptimalkan semuanya (output akan menjadi 0 untuk solusi divisi + mod).
Ambillah dengan sebutir garam:
#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);
}
Hasil: 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);
}
Hasil: 25
double
(item terakhir Anda) menurut saya seperti ide yang buruk, Anda akan berakhir dengan angka yang tidak sesuai, dan dapat merugikan Anda dalam kinerja dan ukuran yang dapat dieksekusi (selalu menjadi masalah bagi saya pada sistem tertanam tertentu).