miniconda3 が遅かった件

このブログで何度か紹介している TechEmpower FrameworkBenchmarks では、フレームワークごとにテストを Travis で回している。 Python をビルドするときには速度重視で make profile-opt でビルドしたいのだが、ビルド時間が長くなり、 Python 2 と 3 の両方をビルドすると Travisインスタンスタイムアウトして fail してしまう。

毎回同じ Python をビルドするのが無駄すぎるので、高速な Python をバイナリ配布して欲しい。最近はインテルPython が話題だが、多分まだ一般利用は無理だし、(高速化した)数学系のライブラリをバンドルしてるので Web 系にはちと向かない。

数学系のバンドルをした Python ディストリの一つとして Anaconda があり、その軽量版として miniconda があるので、それが高速なインタプリタを使ってるのではないかと期待して pybench してみた。

しかし、 pyenv で profile-opt なしでビルドした Python 3.5.1 が average: 2967ms の環境で miniconda は average: 3293ms と、かなり遅かった。 使っている GCC がかなり古いせいかな。

    Python:
       Implementation: CPython
       Executable:     /home/inada-n/local/miniconda3/bin/python
       Version:        3.5.1
       Compiler:       GCC 4.4.7 20120313 (Red Hat 4.4.7-1)
       Bits:           64bit
       Build:          Dec  7 2015 11:16:01 (#default)
       Unicode:        UCS4

ところで、 Mac の Homebrew では bottle でバイナリ配布ができているので、 PGO が使える Mac では profile-opt をデフォルトで指定してやれば、みんなが時間をかけて自前ビルドしなくても少し高速な Python を利用できるようになるはずだ。今度時間があるときに試していけそうなら pull request してみたい。

このブログに乗せているコードは引用を除き CC0 1.0 で提供します。