続・C言語のdiv関数
木曜日, 11月 27th, 2008nishさんのコメントを受け、プログラムを書き直してみました。
#include <stdlib.h> int main() { int i, sum = 0; for (i=0; i<10000000; i++) { int x, y; div_t d; x = rand()%3+3 y = rand()%3+1 d = div(x, y); sum += d.quot; sum += d.rem; } return 0; }
#include <stdlib.h> int main() { int i, sum = 0; for (i=0; i<10000000; i++) { int x, y; int q, r; x = rand()%3+3 y = rand()%3+1 q = x / y; r = x % y; sum += q; sum += r; } return 0; }
そして、計測結果
$ time ./use_div real 0m0.967s user 0m0.951s sys 0m0.020s $ time ./use_operator real 0m0.946s user 0m0.951s sys 0m0.010s
ほぼ同じ速度になりました。
けど、普通に演算子を使っても同じ速さだったらやっぱり必要なのかどうか...
(gccが最適化をがんばってるんですかね?
けど、 -O0 をつけても同じ結果でした。)
(2011/07/13 追記)
このエントリへのスパムコメントがやたらと多いので、コメント欄を閉じます。
なにかコメントがある方は別のエントリにコメントを付けて下さい。