分配已知值而不是计算它们?

时间:2018-10-29 02:47:14

标签: python

如果我正在创建一个对数据集进行一些复杂计算的程序,并且我已经知道某些值应该是什么,我还应该计算它们吗?例如,如果我知道0或1总是自己,那我应该检查值是0还是1还是实际上进行计算?

编辑:

我没有代码,因为我只是问一个概念。我正在创建一个程序以返回数据集中每个数字的以10为底的对数,我想知道是否更有效地返回我已经知道的值,例如0表示1,“ undefined”表示0,以及零的数量对于可以被10整除的数字,我不确定它是否更有效,以及在更大范围内是否会有效。

1 个答案:

答案 0 :(得分:1)

让我们尝试这个简单的例子

$ python3 -m timeit -s "from math import log; mylog=lambda x: log(x)" "mylog(1)"
10000000 loops, best of 3: 0.152 usec per loop
$ python3 -m timeit -s "from math import log; mylog=lambda x: 0.0 if x==1 else log(x)" "mylog(1)"
10000000 loops, best of 3: 0.0976 usec per loop

因此,速度有所提高。所有非特殊情况下运行速度都较慢

$ python3 -m timeit -s "from math import log; mylog=lambda x: log(x)" "mylog(2)"
10000000 loops, best of 3: 0.164 usec per loop
$ python3 -m timeit -s "from math import log; mylog=lambda x: 0.0 if x==1 else log(x)" "mylog(2)"
1000000 loops, best of 3: 0.176 usec per loop

在这种情况下,最好完全放弃包装器功能

$ python3 -m timeit -s "from math import log" "log(2)"
10000000 loops, best of 3: 0.0804 usec per loop