将除法保存到变量并使用变量或重新计算两次更快?

Faster to save Division to a Variable and use the variable or Recalculate twice?

假设您有以下数据类型(数字作为参数填充):


目标是计算 body-mass iindex看起来像 23.13 等等...

bodyMassIndex = 体重/身高^2

我想更多地使用 bmi,例如将 bmi(浮点数)转换为 int 或将 bmi 除以模等...

是先保存bmi然后在其他计算中使用变量(选项a)还是在其他计算中再次进行公式计算(选项b)在计算速度上更快 ?


选项A:

**bmi** = weight / height^2

OtherCalculation = **bmi** % 10

...

选项 B:

bmi = weight / (height^2)

OtherCalculation = (weight / height^2) % 10

OtherOtherCalculation =  (weight / height^2) * 100

...

编辑我正在写Python

我决定使用 python 的 timeit 模块对您的示例进行基准测试。我选择了任意高度和宽度,因为这些值不会影响比较结果。使用下面的脚本,我发现(不出所料)将值保存到中间变量的速度至少是 Python 3.x 和 Python 2.x.[= 的两倍14=]

from timeit import timeit

runs = 1000000

option_a = "(w / h ** 2)"
option_b = "bmi"

setup_a = "w = 4.1; h = 7.6"
setup_b = "{}; bmi = {}".format(setup_a, option_a)

test_1 = "v = {} % 10"
test_2 = "v = {} * 100"


print(timeit(test_1.format(option_a), setup=setup_a, number=runs))
print(timeit(test_1.format(option_b), setup=setup_b, number=runs))

print(timeit(test_2.format(option_a), setup=setup_a, number=runs))
print(timeit(test_2.format(option_b), setup=setup_b, number=runs))

结果在Python3

0.2930161730000691
0.082850623000013
0.17264470200007054
0.06962196800031961

并在 Python 2

0.126236915588
0.0508558750153
0.113535165787
0.0394539833069