[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[jfriends] Re: Javaベンチマーク
前橋です。
>># ベースのソースはCですし、VMの性能試験ですからCと条件を同じ
>># にしなければならないわけで、staticの固まりになっています。
>># OOPしてないぞ、と文句を付けないように(^^;
>
>どのような尺度で何を計測するベンチマークなのでしょうか?
とくに深く考えて問題を選定したわけではなくて、たまたまCで、
この問題を解いてみたソースが手元にあったので、試してみたまで
です。
昔、Javaを紹介している雑誌なり本なりを見ると、たいてい、「20
倍くらい遅い」と書いてありました。でも、こんなサンプルで計測
しましたよ、と、ベンチマークのコーディングが一緒に載ってるの
は、とんと見掛けませんでした。
そうなると、実際どれぐらいなんだろう? と、試してみたくなるの
が人情ってものなのでは?
# 最初は、for文の空ループで試してみたのですが、どうもオプティ
# マイザに畳まれてしまったらしく、理解不能の結果が出ました(^^;
画面表示とかがバリバリに入るプログラムなら、こんなに差はつか
ないでしょうけれども、それって、native methodの分に助けられ
てるだけだし...
>オリジナルのCソースに条件を合わせるということには
>どのような意味があるのでしょうか?
「Javaはインタプリタだから遅いのではないか?」
というのが大抵の人の持つ危惧だと思いますので、インタプリタで
あることによる速度低下を計りたいと思ったら、Cと似たようなコー
ディングにしなければならないのでは。
ただ、JavaだとたいていOOPな書き方をするので、実際にはそれを
加味しなければならないと思います。
ちなみに、当時、このソースを知人に送ったら、「OOPしてないじゃ
ないか」と言って、ご丁寧にもOOP版を作ってくれました。
ひとの書いたソースなので、公開は控えますが、ベンチマークは以
下の通りでした。予測はしてましたが、さらに遅くなってます(^^;
221.0u 0.0s 4:12 87% 0+0k 0+0io 0pf+0w
もっとも、今だと、JITのおかげで、もっと差が少なくなっている
んじゃないかという気はします。
># たぶん、大量の配列を扱うのは Java の不得意な分野だと思います。
そうですね。そんな気はします。
ただ、Javaでは配列をヒープに取るので、そこが遅いに違いない、
と思っていたのですが、どうもそこはあんまり影響なさそうなので、
あとは、配列のレンジチェックの分でしょうか(憶測ですけど)。
# でも、配列アクセスが遅いとしたら、やっぱりオセロの思考ルー
# チンは遅くなりそうですね。
## そういえば、Ark for Javaを試してみた方っておられます?
## 某所では、「かなり重い」という話も聞いてますけれども...
>## Java と C でサーバー書いてベンチマークしたらいいんじゃないでしょうか。
>## 私は書けませんが..
えっと、この場合の「サーバ」って何なんでしょう...? (^^;
-----------------------------------------------------------
前橋 和弥 maebashi@xxxxxxxxxx
中部ソフトエンジニアリング(株)
〒450 名古屋市中村区名駅4-10-25(名駅IMAIビル 5F)
Tel:(052)583-4511(代) 内線 252 Fax:(052)583-4566
------------------------------------------------------------