WindowsのUbuntuでPythonとPyPy(int32、double)

32ビットを超える整数UbuntuPythonが速かったが、そうでない場合はどうだろう。簡単な例で確かめてみる。

#!/usr/bin/python

import sys
import time

def H(n):
    return sum(n / k for k in xrange(1, n + 1))

t0 = time.clock()
print H(10 ** 8)
print >>sys.stderr, time.clock() - t0
Python(Win)    7.4sec
PyPy(Win)      1.0sec
Python(Ubuntu) 6.0sec
PyPy(Ubuntu)   1.6sec

PyPyならWindows版の方が速いようだ。
ついでに浮動小数点数も。

#!/usr/bin/python

import sys
import time

def H(n):
    s = 0
    x = 0.0
    for k in xrange(1, n + 1):
        x += 1.0
        s += 1.0 / x
    return s

t0 = time.clock()
print H(10 ** 8)
print >>sys.stderr, time.clock() - t0
Python(Win)    11.7sec
PyPy(Win)       0.4sec
Python(Ubuntu)  7.9sec
PyPy(Ubuntu)    0.4sec