lambda 演算と関数
lambda で演算する方
import numpy import time f = lambda x: x**2 def test0(n): """空""" t1=time.time() t2=time.time() print t2-t1 def test1(n): """内包表現""" t1=time.time() a=[ f(x) for x in range(n) ] t2=time.time() print t2-t1 def test2(n): """append""" t1=time.time() a = [] for x in range(n): a.append(f(x)) t2=time.time() print t2-t1 def do(n): """テストプログラム""" test0(n) test1(n) test2(n) test0(n) test2(n) test1(n) test0(n) if __name__=="__main__": do(int(1e7))
9.53674316406e-07 4.37765097618 5.39173102379 9.53674316406e-07 4.00302004814 3.27852892876 2.14576721191e-06
関数で演算する方
import numpy import time def f(x): return x**2 def test0(n): """空""" t1=time.time() t2=time.time() print t2-t1 def test1(n): """内包表現""" t1=time.time() a=[ f(x) for x in range(n) ] t2=time.time() print t2-t1 def test2(n): """append""" t1=time.time() a = [] for x in range(n): a.append(f(x)) t2=time.time() print t2-t1 def do(n): """テストプログラム""" test0(n) test1(n) test2(n) test0(n) test2(n) test1(n) test0(n) if __name__=="__main__": do(int(1e7))
9.53674316406e-07 3.26168203354 3.9990170002 1.90734863281e-06 4.01373195648 3.26440596581 1.90734863281e-06
lambda より関数の方が速いのかー.知らなかった.