为什么计算这么大的时差呢?

Let*_*t4U 4 python

我需要将大量的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
Run Code Online (Sandbox Code Playgroud)

我跑了好几次,第二种方法的速度一直是第一种方法的两倍.为什么差异如此之大?

Vas*_*nov 8

>>> 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        
Run Code Online (Sandbox Code Playgroud)

在第二种情况下,简单地优化模运算.