[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
------------------------------------------------------------