kなんとかの日記 このページをアンテナに追加

2010-04-27

スクリプト言語の息の根を止めるのは案外 SSD かもな

| 09:06 |  スクリプト言語の息の根を止めるのは案外 SSD かもなを含むブックマーク

大変たいへん興味深い記事。全プログラマーにとって。

HDDの代わりにSSDを利用したら、リレーショナルデータベースの性能はどれだけ向上するのでしょうか? オラクル富士通が共同検証を行い、その結果をホワイトペーパーとして先週発表しました

...(snip)...

HDDは200スレッドで性能が頭打ちなのに対し、SSDは200スレッドから300スレッドになってもまだ性能は上昇。ただし、300スレッド時にはCPU利用率が100%に近づいており、先にCPU性能の方がボトルネックとなってしまったようです。

HDDをSSDにしたらデータベースはどれだけ速くなるか? オラクルと富士通が実験 ? Publickey

動的なスクリプト言語 (RubyPython など) と静的なコンパイル型言語 (C++Java など) では、だいたい 5 倍から 10 倍ぐらいの速度差がある。それでもスクリプト言語が実用的に使われたのは、言語の速度差がそのままアプリケーションの速度差にはならないから。つまりスクリプト言語で作られたアプリケーションが、必ずしも C++Java 製のアプリケーションより 5 倍も遅いというわけではない。

言語の速度差がそのままアプリケーションの速度差にならない理由は、CPU より I/O (ネットワークやディスクアクセス) がボトルネックになるから、というのはよく言われるし、実際そうである。少なくとも今までは。

しかし SSD が主流になり、ディスクアクセスや DBボトルネックにならない (あるいはなったとしてもペナルティが少ない) ような時代になったら、言語の速度差がそのままアプリケーションの動作速度になる可能性がある*1。そうなると、プログラミング言語の速度が今よりずっと重要になるだろうし、動作速度の遅いスクリプト言語は人気が暴落するかもしれないね。まあ暴落まではいかなくとも、人気が下がることは大いにありうる。

スクリプト言語屋さんは今からそのときに備えるべきだろう (そのときが来てからじゃ手遅れ)。とりあえずできることは:


つーかね、21 世紀も 10 年目に突入したんだし、もうそろそろ「スクリプト言語並みに使いやすい 静的な言語」が主流になって欲しいよね。もともと速度的に不利なスクリプト言語を一生懸命高速化するよりも、そっちのほうがあるべき姿だと思うんだけど、賛同者はおらず。なんで OCaml は今いち人気がでないんだろう。

*1:まあアーキテクチャキャッシュ技術が最重要なのは変わらないだろうけど。

flat8flat8 2010/04/27 10:19 確実にIntelはそこまで考えていると思います。で、ある程度SSDが普及したらSSD自体の製造からは手を引くでしょうけど。

通りすがり通りすがり 2010/04/27 11:31 クライアントコードの処理時間(コスト):バックエンドの処理時間(コスト)の考察無しには、SSD時代になったとしても一概にスクリプト言語不利とも言えないのではないでしょうか。

yuki_heroyuki_hero 2010/04/27 12:10 まぁ、巨大な企業は、社会基盤そのものにも目をつけていますから...

cpwcpw 2010/04/27 12:43 アプリケーションサーバは分散が容易とういうことを忘れてはいけませんよ。サーバも安くなってきてますしね。人件費の方が高コストです。

GoatGoat 2010/04/27 13:02 ボトルネックになるのはストレージだけではないでしょう。PHPはもちろん、Ruby、Python、Perlも多くはウェブ系のシステムに使われていると思いますが、そういう場合ではネットワークがボトルネックになってきます。
そして、スケールアップよりもスケールアウトという流れの中でますますその傾向は強くなっています。

仮にコードがボトルネックになったとしても、多くの場合はアルゴリズムに問題があるのであって、そこを改善してオーダーを変えてしまえば、5倍〜10倍の差なんて問題にならなくなりますし、そもそもタイムクリティカルなミドルウェアでは今でもCやC++が主流なのでSSDがスクリプト言語に与える影響はほとんどないのではないかと思います。

通りすがり通りすがり 2010/04/27 13:44 インタプリタかコンパイルかで速度が極端にかわるようなら、単純にPerl,PHP,Ruby,Python等で静的コンパイルできるようにするんじゃないかなぁ〜?

muhamuha 2010/04/27 13:51 逆にますますインタプリタが使われると思う。 人件費より高いの無いでしょ

とことことことこ 2010/04/27 14:38 確かにトランザクションが多いところはそうなるかもしれない、
よく知りませんがスクリプト言語の作成効率が高ければ、そんなにトランザクションがおきないところは安く構築するために有効だと思われるので、そんな劇的にシフトはしない気がする。

TaruryunTaruryun 2010/04/27 17:08 元のテストの結果は、僕が読む限り、
処理能力が頭うったのは
『DBサーバの』CPUに読めるんですが・・・。

もし息の根止められるとしたら、フロント用アプリケーションを書くための言語もろもろではなく、「SQLというスクリプト言語」でしょう・・・

apollo440apollo440 2010/04/27 21:46 いやいやいや、”全”プログラマーって。ストレージ使うのが当たり前じゃない世界もあるし、もうちょと範囲狭くして欲しい気が。

あと、(人気の)スクリプト言語は、「使いやすい」じゃなくて「遊びにはよい」かと。

nonamenoname 2010/04/28 00:56 C++, javaで生活している者から一言


スクリプト屋(笑
が必死だなw

neginegi 2010/04/28 18:04 仕事でjavaからphpに移って6年くらいだけど、
スクリプト言語は
実行速度やコード書く速度とかより
バグが激しくてテストが半端ないよ。
誰かが書いたソースを使いたく無いし、
使おうと思うとソースの細部まで読まなきゃならなくなる
せめて返却値くらいは型を決めてくれ。
NULLの場合とBoolの場合とがあるって糞でしょ?
あとExceptionもだね。

俺もOCamlが何で流行らないのか疑問なんだよね。
OCamlは関数型言語で手続き型から移行しやすい言語だと思う。
まあデフォルトで日本語使えねーって事もあるかもね。
camomileも開発止まってるのかな?
他はHaskellに期待してます。

スクリプト屋は一度、静的型付けの関数型言語をかじった方がいいと思うよ。

noricyannoricyan 2010/04/29 09:12 言語を叩く人は、決まって使う人間を叩くんだよね。

そもそもそもそも 2010/05/04 17:37 C++みたいに簡単で便利な言語がすでにあるじゃない。