|
|
1
32
代码几乎相同,但f1总是运行第15行并跳到21,f2总是运行15->18->21,因此性能应该受到if语句中的true/false的影响,而不是<或>=问题。 |
|
|
2
5
第一个测试的结果为true,第二个测试的结果为false。结果可能是处理方式略有不同。 |
|
|
3
5
因此,在比较过程中,惟一的变化是通过switch语句的路由,以及结果是真是假。我的猜测是,您只是看到了由于CPU的执行路径(可能还有分支预测)而产生的变化,因此在其他版本的Python中,您看到的效果也可能很容易消失,或者相反。 |
|
|
4
2
我刚刚在python3.1.2中尝试过它-没有区别。
因此,我猜与其他进程的调度冲突是这里的主要变量。 |
|
|
5
2
试试看-
在我的机器上,输出是(一致的,并且不管我尝试了多少个循环-所以它可能不会恰好与机器上发生的其他事情一致)-
“t1”总是需要更长的时间。 但是,如果您尝试对调用或对象创建进行重新排序,则情况会有所不同(而且不是我可以轻松解释的模式)。
|
|
6
1
用IPython我明白了
其他比较
即使超过1000000个循环,结果也会有很大的波动 |
|
|
7
1
这是一个相当有趣的问题。我移除了
这是从Objects/object.c函数将\u 3way\u转换为\u object。请注意,>=是最后一个分支;这意味着,单凭它,不需要跳出。中断语句被删除。它和志贵拆卸中的0和5匹配。作为一个无条件中断,它可以由分支预测来处理,但也可能导致要加载的代码更少。 在这个层次上,差异自然是高度特定于机器的。我的测量不是很彻底,但这是一个点,在C级我看到一个偏差之间的运营商。我可能有一个更大的偏见,从CPU速度缩放。 |
|
|
giantjenga · 优化整数向量到二进制向量的转换 1 年前 |
|
|
Daniel Lobo · 使用约束进行优化 1 年前 |
|
Sergio · python中大量数字的乘法 2 年前 |
|
|
Sergey Dev · 临时表与表变量 2 年前 |
|
|
John · 减少C中的内存消耗++ 2 年前 |