Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在不运行代码的情况下测量性能_Python_Algorithm_Performance - Fatal编程技术网

Python 在不运行代码的情况下测量性能

Python 在不运行代码的情况下测量性能,python,algorithm,performance,Python,Algorithm,Performance,有时,您想知道您的代码是否有效运行,或者在运行它之前估计它在您的PC上需要多长时间,以便将其与实际结果进行比较 对于在我的PC上运行的这个简单的Python代码片段(3.3 GHz处理器、1个CPU和2GB Ram),可以估计需要多长时间吗 max([x / 4 for x in range(10**3)]) 一般来说,这个问题涉及到解决暂停问题,所以不是。如果您了解计算复杂性,您可以根据不同大小输入的运行时间来估计一种大小输入的运行时间,但您仍然需要至少运行一次代码才能获得初始时间估计。(顺

有时,您想知道您的代码是否有效运行,或者在运行它之前估计它在您的PC上需要多长时间,以便将其与实际结果进行比较

对于在我的PC上运行的这个简单的Python代码片段(3.3 GHz处理器、1个CPU和2GB Ram),可以估计需要多长时间吗

max([x / 4 for x in range(10**3)])

一般来说,这个问题涉及到解决暂停问题,所以不是。如果您了解计算复杂性,您可以根据不同大小输入的运行时间来估计一种大小输入的运行时间,但您仍然需要至少运行一次代码才能获得初始时间估计。(顺便说一句,您的代码是O(N),因此将
10**3
更改为
10**4
将花费大约10倍的时间。它可能非常快,尽管其他因素(如内存分配开销)非常重要。)计算复杂性对于这个问题是有意义的。但是,它有点难以与其他代码片段一起使用,比如open('foo.txt','w')作为f:len([f.write('this a test'),用于x范围内的x(103)])顺便说一句,我认为原始示例是O(n**2),因为max是O(n),您首先要创建一个列表。这两个
max
和列表理解都是
O(n)
,但是,由于您只运行了它们中的每一个一次,因此总体上仍然是
O(N)
。如果您正在运行一个
O(N)
子表达式
O(N)
次,则只有
O(N**2)
。您评论中的新示例可能也是
O(N)
(如果您将
N
视为
xrange
的大小,例如103,或总输出的大小(即
len(“这是一个测试”)*103
)。我不知道你为什么要使用103个
值的
len
。我认为这个问题太广泛了。对于像问题中这样的一个小例子,你可以运行它来对所需时间做出一个很好的估计。对于一个更有趣的例子,有很多方法可以估计运行时间,包括分析性和实用性。有人提到了暂停问题,虽然这并不排除对单个程序的估算,但它确实指出了一个事实,即没有通用的方法。一般来说,这个问题涉及到解决暂停问题,所以没有。如果您了解计算复杂性,您可以估算on的运行时间e输入大小基于不同大小输入的运行时间,但您仍然需要至少运行一次代码以获得初始时间估计。(顺便说一下,您的代码是O(N),因此将
10**3
更改为
10**4
应该需要大约10倍的时间。尽管其他因素可能会影响速度(比如内存分配开销)是非常重要的。)计算复杂性对于这个问题来说是有意义的。但是,对于其他代码段,比如open('foo.txt','w')作为f:len([f.write('this a test')对于x范围内的x(103)],使用它有点困难。顺便说一句,我认为原始示例是O(n**2),因为max是O(n)您首先创建一个列表,这两个
max
和列表理解都是
O(N)
,但是由于您只运行了它们中的每一个一次,所以总体上仍然是
O(N)
。如果您运行的是
O(N)
子表达式
O(N),则只有
O(N**2)
次。您评论中的新示例可能也是
O(N)
(如果您将
N
作为
xrange
的大小,例如103,或总输出的大小(即
len(“这是一个测试”)*103
)。我不知道你为什么要使用103个
值的
len
。我认为这个问题太广泛了。对于像问题中这样的一个小例子,你可以运行它来对所需时间做出一个很好的估计。对于一个更有趣的例子,有很多方法可以估计运行时间,包括分析性和实用性。有人提到了停顿问题,虽然这并不排除对单个程序的评估,但它确实指出了一个事实,即没有通用的方法。