擅长:python、mysql、java
<p>通过以下方式重新定义函数,我比未编译的serge sans paille版本提高了10%:</p>
<pre><code>def P0(z, u0):
x = np.inner(z, u0)
x *= u0
return (z - x)
def norm0(x):
return np.sqrt(np.sum(x*x))
def powerA20(A, u0):
ITERATIONS = 100
x0 = np.random.random(len(A))
for i in range(ITERATIONS):
x0 = P0(np.dot(A, x0), u0)
x0 /= norm0(x0)
return (np.inner(np.dot(A, x0), x0))
</code></pre>
<p>像<code>*= u0</code>而不是{<cd2>}这样的操作可以避免RAM中不必要的变量副本,从而使程序稍微加快一点。
你也不需要这样。最后,<code>x*x</code>比<code>x**2</code>稍快。在</p>