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

 非得高档防水 发布于 2023-02-09 19:00

我需要将大量的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

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

1 个回答
  • >>> 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        
    

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

    2023-02-09 19:03 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有