雨谷の日和

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

JavaとCとの性能比較(ファイル出力処理)

ということで長々とかかってしまったが、ファイル出力処理におけるJavaとCとの性能比較はここまでで一区切りである。
まとめておこう。

Pentium4:2.4GHz
WindowsXP(MS932)
cygwin
gcc3.3.1
JDK1.4
Java
最適化
最適化
最適化
最適化
(*3)
Encode
Encode
Encode
Encode
出力
(*2)
バッファ無 161617153(*1)177(*1)
バッファ有 55913046
※単位はいずれも[sec]

(*1)Encoding処理の内部バッファが有るので、正確にはバッファ無ではない。

(*2)Cの出力関数としてはfputsを用いた。

(*3)Javaの最適化はHotSpot(実行時最適化)。


・ファイル出力処理ではそもそも外部要因的な負荷が大きいため、CとJavaとの性能差は無視できるほどでしかない。
・ファイル出力処理ではバッファリングの有無が性能に大きく影響する。
Javaの文字列出力は、文字コード変換の分遅い。ただし、文字コード変換には内部的なバッファリングがあるため、その影響は無視できない。
・ファイル出力処理では、Javaの実行時最適化は文字コード変換、バッファリングなどをかなり効率化する。一方、Cはもともとがかなり最適化されているためか、高度な最適化をした場合でもその効果は少ない。


今後は、OSによる処理性能の違いと、外部要因の影響の少ない処理での比較を行ってみたい。