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

时间:2019-01-06 17:32:46

标签: python performance optimization computation-theory

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

  • 整数<-重量
  • 浮动<-高度

目标是计算看起来像23.13等的 b ody- m ass i ndex。

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编写

1 个答案:

答案 0 :(得分:1)

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

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))

Python 3中的结果

0.2930161730000691
0.082850623000013
0.17264470200007054
0.06962196800031961

在Python 2中

0.126236915588
0.0508558750153
0.113535165787
0.0394539833069