[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[jfriends] Re: Javaベンチマーク




前橋です。

高橋さん:
>ベンチマークはとっても奥が深い世界なので、表面的なことしか
>言えませんが。
...
>比較的小さいサイズのデータを読み書き演算するプログラムの場
>合、CPUのキャッシュに収まってしまい、異常に良い性能が出てし
>まうことが考えられます。Cで書いた場合実行ファイルのサイズも
>小さいので、下手をするとデータとコードと両方ともon cache
>となるかもしれません。プロトタイプで性能評価したらとても
>goodだったのに、いざ本物のアプリケーションを作ったら、とっ
>ても性能が悪くてスペック違反になってしまうことがよくあります。
>一方Javaはインタプリタなので、そもそもコードはまずcacheにの
>りきらないし、インタプリタなのでデータもcacheに残り続けない
>かもしれません。

そうですね。この手の問題は、確かにあると思います。

実行コードがcacheに乗るというのは、何もアプリ全体が乗りきら
なくてもいいわけで、全体では大規模なアプリでも高速な実行が可
能なことはあるんじゃないかなあ、という気もしますが、実際、プ
ロトでは速かったのに、巨大アプリに組み込んだら遅かった、とい
う経験は、私もあります。

# でも、javac とか HotJavaとか、やっぱり遅いなー、と思ったの
# は事実です。

## そういえば、「JavaはCより20倍遅い」と言われていた頃、「×
## ×のJITでは、インタプリタよりも23倍速い」なんて記事もあっ
## たりして、おいこらちょっと待て、と思ったことも(^^;

>># たぶん、大量の配列を扱うのは Java の不得意な分野だと思います。
>Javaは配列の境界チェックをしていますしね。
>#実行性能はCの方が100倍速いが、プログラムが完成するまで
>#の期間は100倍遅かったなんてことがあるかも;-)

で、そのプログラムを、たとえば100人がダウンロードして、各100
回づつ実行するわけですね。(あんまり売れ筋のソフトじゃないな(^^;)

>>## Java と C でサーバー書いてベンチマークしたらいいんじゃないでしょうか。
>>## 私は書けませんが..
>たしかVolanoMarkというベンチマークがあります。ソケット接続
>をがんがん行って、データを転送するような類だったと思います。
>これと同じプログラムをCで書く気はとってもおきませんが・・・

この手のプログラムだと、*言語としての* Javaのベンチマークに
はなりませんよね。

Cだとスレッド作るのがややこしい上に移植性もないので、接続ご
とにプロセス立ち上げて、それで資源を喰ったりするわけですが、
そしてそれはサーバの性能には確かに直結するのですが、ワープロ
の性能には縁もゆかりもないわけで。

------------------------------------------------------------
  前橋 和弥                             maebashi@xxxxxxxxxx
  中部ソフトエンジニアリング(株)
    〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
    Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------