前から気になっていた以下の記事。
組み込み関数は手で書かれたコードより速く動作します。例えばmap(operator.add, v1, v2)はmap(lambda x,y: x+y, v1, v2)より速く動きます。
PythonSpeed
実行速度がどの程度違うのかテストしてみる。
import timeit t= timeit.Timer(stmt="map(lambda x,y: x+y, [1,2,3,4,5], [6,7,8,9,10])") print "use lambda: ", t.timeit(number = 10000) t= timeit.Timer(setup="import operator", stmt="map(operator.add, [1,2,3,4,5], [6,7,8,9,10])") print "use operator: ", t.timeit(number = 10000)
実行結果(6回)
>>> use lambda: 0.0648632049561 use operator: 0.053277015686 >>> use lambda: 0.0871851444244 use operator: 0.0545859336853 >>> use lambda: 0.092483997345 use operator: 0.0591459274292 >>> use lambda: 0.0901980400085 use operator: 0.0597898960114 >>> use lambda: 0.115708112717 use operator: 0.0629448890686 >>> use lambda: 0.104001045227 use operator: 0.0628590583801
けっこう差が出た。確かにoperatorの方が速いが、このやり方で合ってるのかな?