- rokujyouhitoma
- 7152
- 0
- 17
- 0
@chlere 公式のHSP VMもHSPコードを解釈して動くVM(確かC++実装)のはずなので、RPythonから変換して作った「HSPコードを解釈して動くVMバイナリ」と同じぐらいの速度しかでなくても不思議はないのです。
2011-11-03 14:35:24PyPyのtrunkなどなどとCPythonの速度差を計測する事を目的としたサイト http://t.co/QD7ugI3V ベンチマークもインタフェースも豪華で驚く
2011-11-03 14:42:28@kumagi PyPyのトランスレータは変換の為のSource-to-Sourceコンパイラなので、むしろRPythonからCに変換したものがC++と「同等」ならそれはそれでとても凄い事です #pypyja
2011-11-03 14:43:55@chlere あ、はい。遅くなりこそすれ速くなる道理は無いと思うのですが、それがどうやったら本家(CPythonやC++HSP)を超えた速度が出うるのか…hintingというものがそんなに効く物なんですか…?
2011-11-03 14:47:04PyPyの説明を文面で行う事が困難であることの理由として、PyPyはそれ自体が色々な概念の集合体であるため表現に多態性が生まれてしまうことにあると思う。
2011-11-03 14:47:13@chlere インタプリタ実行する際に、コードの一部を機械語にコンパイルして実行する事でコードの解釈に掛かる時間をまとめて前払いする手法だと思ってたのですが違いますか?
2011-11-03 14:51:18実際hintingはものすごく(メタな部分しか見られないというデメリットと手軽さによって得られるメリットを考慮して)効く。「元々はJITコンパイラの簡易版のつもりだったけどやがてそれでしか適応でき得ない最適化が見つかった」ということで単純には比べられなくなっている。#pypyja
2011-11-03 14:53:24@kumagi そうです。C++で書かれたHSPのインタプリタは、「HSPで書かれたプログラムをエミュレートする処理」をC++で処理するのに対し、PyPyでJIT付与で作られたHSPインタプリタでJITコンパイルされた部分は「HSPで書かれた処理」をC++で処理できますよね。
2011-11-03 14:55:21@chlere 最後のところはC++じゃなくてCでしょうか。 「HSPインタプリタ」をJIT実行することが「HSPコード」のJIT実行と同じぐらいになる、という事ですか?
2011-11-03 14:59:29@kumagi Cですねすみません。うーん、同じぐらいになるかどうかは分かりません(アプローチの方法が違うので全てのプログラムに対して等価かどうかは言えない)が、少なくとも同じ土俵で張れるというところがPyPyが騒がれている一番の理由じゃないでしょうか。
2011-11-03 15:04:59JITをインプレするには色々チューニングが必要なので、単純にHSPのJITがそこまで優秀じゃないか、それかHSPがlanguage-specificなJITコンパイラに向いていないという議論もできる。
2011-11-03 15:07:40PyPyの持つ「Meta Tracing」のメリットは、「深い所までは入り込めないけどそのかわり全域に渡ってJITを利かせられるよ」という所なので、それがHSPにクリティカルに適合して従来手法で作成されたJITよりも性能が出てしまった、なんてことも無くは無い #pypyja
2011-11-03 15:09:15