ひたすらmini python

いくつか高速化のための変更を加えて、ベンチマークとってみた。

データは、Tiviとpythonで同じプログラムを走らせて、実行にかかった時間の比をとったもの。1より小さければTiviのほうが速い。23日に掲載したグラフのデータもまとめて表示させてある。今回の結果は青色のほう。

graph.py の実行時間比は、10倍(グラフ外にはみだしてる) → 6倍 まで改善。しかしまだまだ遅い。他は微妙に速くなったり遅くなったり。

basics/* のファイルは、非常に単純な処理なので、おそらくpythonのほうが遅いのはコンパイルのオーバーヘッドなんじゃないかと予想している。

graph.pyに関する高速化は、そろそろ gprof → 一番重い処理を最適化、というのの繰り返しでは限界があるかなー、というところ。今までは無駄にSTLを使っているとか、とりあえずの実装で遅いことがわかっている部分をカリカリと書き直していて、大体めぼしいところは終わってしまった。どうやって最適化の余地を探すか、その方法から模索していかなければ。コンパイルももうちょっと詰められるかな。

言語処理系の難しいところは、入力がほんとに多種多用なところ。graph.py だけ遅くなる原因がまだわからないけど、graph.pyだけが叩いている弱点がきっとどこかにあるはずだ。