我需要将大量的UNIX时间戳舍入到它们各自的分钟(再次表示为时间戳).
出于纯粹的好奇心,我计时两种方法:
%timeit (127/60)*60 10000000 loops, best of 3: 76.2 ns per loop %timeit 127 - 127%60 10000000 loops, best of 3: 34.1 ns per loop
我跑了好几次,第二种方法的速度一直是第一种方法的两倍.为什么差异如此之大?
>>> import dis >>> method1 = lambda: (127 / 60) * 60 >>> method2 = lambda: 127 - 127 % 60 >>> dis.dis(method1) 1 0 LOAD_CONST 1 (127) 3 LOAD_CONST 2 (60) 6 BINARY_DIVIDE 7 LOAD_CONST 2 (60) 10 BINARY_MULTIPLY 11 RETURN_VALUE >>> dis.dis(method2) 1 0 LOAD_CONST 1 (127) 3 LOAD_CONST 3 (7) 6 BINARY_SUBTRACT 7 RETURN_VALUE
在第二种情况下,简单地优化模运算.