擅长:python、mysql、java
<p>下面是一个简单的实验,它表明瓶颈更有可能是<code>ExpensiveFunction</code>:</p>
<pre><code>import time
def SimpleFunction():
return 1
def ExpensiveFunction():
time.sleep(0.001)
return 1
def test(func):
num_cases = 100
BigMatrix = np.zeros((num_cases,num_cases))
for CasesX in range(0,num_cases):
for CasesY in range(CasesX,num_cases):
BigMatrix[CasesX,CasesY] = func()
</code></pre>
<hr/>
^{pr2}$
<p>除了被调用的函数外,它运行的两次时间是相同的。
当<code>func</code>为<code>SimpleFunction</code>时,填充{<cd4>}所需时间少于1ms。
但是当<code>func</code>是{<cd1>}时,填充{<cd4>}会占用5s的时间</p>
<p>所以双<code>for-loop</code>可能不是瓶颈;<code>ExpensiveFunction</code>是。你可以尝试用你的实际代码来确保。如果结果证明<code>ExpensiveFunction</code>是瓶颈,那么您不必费心优化双循环,因为即使有一种更快的方法来填充{<cd4>},即使您可以将时间成本削减为零,您(在上面的情况下)最多只节省{<cd12>},而整个程序仍然需要5秒以上。在</p>