White scenery @showyou, hatena

If you have any comments, you may also send twitter @shsub or @showyou.

通常対psyco

Numpy速い!
http://chick.g.hatena.ne.jp/allegro/20091117/p1

とかあったんだけど、これpsyco使えばリスト内包でも早くなんじゃね?とか思って書いてみた。


といっても上の文章だとどう書きゃいいのかわからないので自分で書き直してみた。そのため行列じゃなかったりで多少意味合い違うかも。

import datetime
from pylab import arange
from math import sqrt
import random
import psyco
psyco.full()

dim = 100
def getdistsA(unitA, unitB):
    s = sum([(unitA[x] - unitB[x])  for x in arange(dim)])**2
    dist = sqrt(s)
    return dist

def main():
    tt0 = datetime.datetime.now()
    for i in arange(1000*10):
        A = [random.random()*10 for x in arange(dim)]
        B = [random.random()*10 for y in arange(dim)]
        d= getdistsA(A,B)

    tt1 = datetime.datetime.now()
    t0 = tt1 - tt0
    print t0,"sec"

main()

これで"import psyco"と"psyco.full"を

環境はMacBookAir(10.5.8), Python2.6.4。


劇的って訳じゃないけどある程度早くなる。


ちなみに最初main()を関数にせずにベタで書いてたんだけど、それだと2.7秒かかってた。

参考:http://d.hatena.ne.jp/pcl/20090408/p1