python减法怎么办_为什么减法比Python中的加法快?
发布日期:2021-06-24 16:22:02 浏览次数:2 分类:技术文章

本文共 650 字,大约阅读时间需要 2 分钟。

我可以在我的Q6600(Python 2.6.2)上再现这个。将范围增加到100000000:

('+=', 11.370000000000001)

('-=', 10.769999999999998)

首先,一些意见:

>这是一个小的操作的5%。这很重要。

>本机加法和减法操作码的速度是不相关的。它在噪底,与字节码评估完全相比。这是指一两个本地指令约千。

>字节码生成的指令数量完全相同;唯一的区别是INPLACE_ADD与INPLACE_SUBTRACT和1 vs -1。

看看Python源代码,我可以猜测。这在ceval.c中处理,在PyEval_EvalFrameEx中。 INPLACE_ADD有一个重要的额外代码块,用于处理字符串连接。该块不存在于INPLACE_SUBTRACT中,因为您不能减去字符串。这意味着INPLACE_ADD包含更多的本地代码。根据(非常重要)关于编译器如何生成代码,这个额外代码可能与INPLACE_ADD代码的其余部分是一致的,这意味着添加可以击中指令缓存比减法更难。这可能导致额外的L2高速缓存命中,这可能导致显着的性能差异。

这在很大程度上取决于你所使用的系统(不同的处理器有不同数量的缓存和缓存架构),使用的编译器,包括特定的版本和编译选项(不同的编译器将决定不同的代码位在关键路径,其确定如何将汇编代码汇集在一起​​),等等。

此外,Python 3.0.1(:15.66, – :16.71)中的区别是相反的;毫无疑问这个关键功能发生了很大变化。

转载地址:https://blog.csdn.net/weixin_33800724/article/details/113506388 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:python在金融领域的前景_让我们在金融技术领域学习Python~~,一,起来,科技领域,的,python,吧...
下一篇:python写linux命令_Python写的系统常用命令

发表评论

最新留言

路过,博主的博客真漂亮。。
[***.116.15.85]2024年04月10日 02时37分10秒