<p>你的代码中有很多低效的地方。在</p>
<p>只查看<code>Person.tick</code>方法:</p>
<p>更换</p>
<pre><code>for spell in self.spellTimers:
self.spellTimers[spell]['tick'] += 1
</code></pre>
<p>与</p>
^{pr2}$
<p>同样的事情,每个值至少少两个dict查找</p>
<p>更换</p>
^{3}$
<p>与</p>
<pre><code>for thing in Thing.List.itervalues():
if thing and "person" in thing.attrs
and "spawner" in thing.attrs:
thing.tick()
</code></pre>
<p>(好吧,也许速度不会太快,但我更喜欢它)</p>
<p>获取:</p>
<pre><code>from spells import cast,spellmaker
</code></pre>
<p>从tick()方法中取出并放入文件的顶部</p>
<p>替换:</p>
<pre><code>#spell cooldown timer
self.timers['cooldown'] -= 1
if self.timers['cooldown'] < 0:
self.timers['cooldown'] = 0
</code></pre>
<p>有:</p>
<pre><code>#spell cooldown timer
self.timers['cooldown'] = max(0, self.timers['cooldown']-1)
</code></pre>
<p>你经常这样做。
你有很多代码</p>
^{8}$
<p>第二个<code>if</code>应该是<code>elif</code>如果第一个条件为真,第二个条件永远不会为真。在</p>
<p>请记住,每次访问<code>self.somedict['name']</code>时,您都在进行两次dict查找(开销可能会更大,但这是thum的一个规则)。如果你有一个逐行的dictlookup,你可以通过将它分配给一个“temp”本地变量来加快代码的速度</p>
<p>如果你继续检查你的代码,你将放入一个tweek,就像上面的一个tweek,它将把东西内联起来。很抱歉,我不能把这一切都做完。在</p>