かきかたえんぴつ

いつかどこかで何かの役にたつかもしれないメモ

round の速度

Python で比較。10*1000*1000 回ループさせたらこのぐらい。

cast:   2.792 s
floor:  2.524 s
ceil:   2.539 s
round: 10.761 s
pass:   0.472 s

キャストや切り捨てに比べて round は 5 倍ぐらい時間がかかっている。

実行したコードは以下。

import datetime
import math

n = 10*1000*1000

dummy = 0
dt_1 = datetime.datetime.now()
for i in range(n):
    dummy = int(math.pi) 
    # int -> math.floor, math.ceil, round, pass
dt_2  = datetime.datetime.now()

dt_delta = dt_2 - dt_1
print 'cast:  %2d.%03d s' % (dt_delta.seconds, (dt_delta.microseconds / 1000))