小编mwo*_*mwo的帖子

为什么 CPython 中 float * int 乘法比 int * float 快?

基本上,该表达式0.4 * a始终比a * 0.4. a是一个整数。我不知道为什么。

我推测这是LOAD_CONST LOAD_FAST字节码对比 更“专业”的情况LOAD_FAST LOAD_CONST,我对这个解释完全满意,除了这个怪癖似乎只适用于乘法变量类型不同的乘法。(顺便问一下,我曾经在github上找到的这个“字节码指令对流行度排名”的链接现在已经找不到了,有人有链接吗?)

无论如何,这是微观基准:

$ python3.10 -m pyperf timeit -s"a = 9" "a * 0.4"
Mean +- std dev: 34.2 ns +- 0.2 ns
Run Code Online (Sandbox Code Playgroud)
$ python3.10 -m pyperf timeit -s"a = 9" "0.4 * a"
Mean +- std dev: 30.8 ns +- 0.1 ns
Run Code Online (Sandbox Code Playgroud)
$ python3.10 -m pyperf timeit -s"a = 0.4" "a * 9"
Mean +- std dev: 30.3 ns +- 0.3 ns …
Run Code Online (Sandbox Code Playgroud)

python cpython multiplication

8
推荐指数
1
解决办法
188
查看次数

标签 统计

cpython ×1

multiplication ×1

python ×1