雨谷の日和

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

入出力処理のCとJavaの性能比較のまとめ

今までに測ってきた結果を、表にまとめておこう。


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

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

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

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


文字コード変換が無い状態でのJavaの性能は、ほとんどCのそれと同じであることが分かる。
最適化されたものはむしろCより速いようにも見えるが、これは今回の場合、誤差の範囲と考えるべきかも知れない。
結局、出力処理ではJavaとCの性能差よりも、出力にかかわる処理(ファイルへの書き出しなど)の負荷が高く、そちらの性能の方が測定結果に効いてきていると言って良いようだ。


ちなみに表に埋まっていないところが2箇所あるが、これは測定を行っていないからである。
測る必要はあまり無いような気もするが、埋まっていないのは気持ち悪い。
ということで次回は、Javaの文字列出力でバッファリングをした場合を検証してみる。