雨谷の日和

過去20年で2,700を超えるアニメの第1話だけは見続けた僕のお勧めアニメがハズレなはずがない

fputsの場合

JavaとCの実行比較」のCのソースを、fputsに変えてみよう。

#include 
int main(void) {
  int i;
  FILE *out;
  out = fopen("c_log.txt", "w");
  for(i = 0; i < 10000000; ++i)fputs("Hello world!\n", out);
  fclose(out);
  return (0);
}

これを以前と同様に最適化オプションを変えてコンパイルし、実行してみた結果が以下である。

20:51:43
20:51:48
20:51:53
20:51:57
20:52:02
20:52:06

どの結果も、4〜5秒となった。
面白いのは、最適化を行ってもそれほど効果が現れないというところだろうか。
つまりfprintfはCの関数としては効率が悪いが、最適化によってfputsと同等にまで性能が向上すると言えるだろう。
ただしfprintfはfputsには無い機能を持っているため、それを用いている場合は最適化の効果を期待出来ないかも知れない。
今回はfputsの代わりのような使い方をしているから、最適化が効いたのかも知れない。
機会があれば、その検証もしてみたい。