我正在努力提高程序的速度。除了删除冗余,使用循环而不是执行每一行,我想知道是否将所有方法放在一个主程序中来调用它们,或者将这些方法分成其他较小的程序,然后导入那些较小的程序并在主程序中调用,使得速度的差异?
另外,请看下面两种导入,我想第一种更快?
from ProgramA import MethodX
MethodX.do something
import ProgramA
ProgramA.MethodX.do something
答案 0 :(得分:1)
你的问题的答案是否定的。在谈论程序的速度时。你提到的所有事情都不重要。导入差异不会使您的程序显着加快或将代码置于for循环中。如果你想了解程序效率真正重要的东西,请搜索Big O表示法并阅读其中的一些内容。但是,例如,考虑尝试找到最大的共同点。
找到两个数字的GCD的第一件事就是这样......
def GCD (num1, num2):
for i in reversed(range(1, num1)):
if (num1 % i == 0) and (num2 % i == 0):
return i
现在,这个程序可以解决您的问题。但这不是解决问题的最佳方式。最好的方法叫做Euclid的算法...例如。
def GCD(num1, num2):
if (num2 == 0):
return num1
else:
return GCD(num2, num1 % num2)
此算法更好。因此,故事的寓意是,当你谈论程序的速度和效率时,你正试图找到解决问题的最佳方法,如上面的例子。像你上面谈到的那些小事情并不重要。但是,如果您真的需要更快的速度,请查看多处理和并行计算。