ตัวอย่างการทดสอบโค้ด div () และการหารรวมและ mod ฉันรวบรวมสิ่งเหล่านี้ด้วย gcc -O3 ฉันต้องเพิ่มการโทร to do ไม่มีอะไรที่จะหยุดคอมไพเลอร์จากการปรับแต่งทุกอย่างให้เหมาะสม (เอาต์พุตจะเป็น 0 สำหรับโซลูชันการหาร + mod)
ใช้เกลือเม็ด:
#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
(รายการสุดท้ายของคุณ) สำหรับฉันดูเหมือนเป็นความคิดที่ไม่ดีคุณจะจบลงด้วยตัวเลขที่ไม่เข้ากันและอาจทำให้คุณเสียค่าใช้จ่ายในการปฏิบัติงานและ ขนาดที่ปฏิบัติการได้ (มักจะเป็นปัญหาสำหรับฉันในระบบฝังตัวบางระบบ)