のんびりしているエンジニアの日記

ソフトウェアなどのエンジニア的な何かを書きます。

PyPyのインストール

Sponsored Links

皆さんこんにちは
お元気ですか。TOEIC終わって疲れた。

本日はPyPyについて

What is PyPy(パイパイ)

f:id:tereka:20141214213458p:plain
Pythonの実装の一つでございます

・JIT コンパイラで動く為、高速。CPythonの代わりを目指したんだとかなんとか
・RPythonで書かれているとか(Wikipedia)
・色んなプロジェクトが走っているとか
・外で迂闊に言うと不審者に間違えられるとかられないとか

Install

brew install pypy

若しくは公式ホームページからダウンロードして展開しましょう。

Numpyのインストール

何やら公式ではいくつかのプロジェクトで募金を集めているようです。
numpyは以下のような感じでインストールできます。

git clone https://bitbucket.org/pypy/numpy.git
cd numpy
pypy setup.py install

numpy のimportに失敗する人は以下のコマンドを打ち込みましょう。

sudo pypy -c 'import numpy'

せっかくなので速度を比較してみた

昔使ったコードを使います。なんかリストに対してあらゆる処理を実行するものです。

ソースコード

import time

Time = 10
N = 10000000

def list_append():
	for i in xrange(Time):
		array = []
		for j in xrange(N):
			array.append(1)

def list_extend():
	for i in xrange(Time):
		array = []
		for j in xrange(N):
			array.extend([1])

def list_extend_list():
	for i in xrange(Time):
		array = []
		array.extend(range(N))

def list_intend():
	for i in xrange(Time):
		[1 for i in xrange(N)]

if __name__ == '__main__':
	array= [list_append,list_extend,list_extend_list,list_intend]
	time.time()
	for function in array:
		clock = time.time()
		function()
		print (time.time() - clock) / Time

結果

python2.7 pypy
list_append 1.137867 0.595848
list_extend 2.113609 0.663510
list_extend_list 0.396939 0.000001
list_intend 0.482634 0.0554735898972

お、案外高速化されてる。ただ現状、scipyとか対応してないのもあってそういった部分が微妙なんだよなぁ・・・