擅长:python、mysql、java
<p>在没有进一步信息的情况下,我给出的最一般的提示是一次将整个文件,或者至少其中的一个重要部分读入内存。你不想一次只读一个字符,到处寻找;不管引擎盖下正在进行的缓冲,最好把整个东西都记下来,这样你就可以随心所欲地操作它。</p>
<p>我已经用Python编写了解析器,没有特别要求它们比用任何其他语言编写的解析器都要慢。因为这类事情,你很可能在做你不需要做的工作。在这类物品中,创建、销毁和重新创建同一个物品要比将其存放在某处花费更多。一次又一次地重新计算一个值比仅仅把它存储在某个地方要昂贵得多。等等</p>
<p>特别是在Python中,人们陷入的一个陷阱是做大量不必要的字符串操作。不要一次给字符串附加一个字符;当您构建令牌时,对“master”字符串执行您的工作,并一举删除令牌。(换句话说,索引到“master”字符串中,找出起始点和结束点,然后用<code>token = master[start:end]</code>获取它。)一次将一个字符串接在一起是导致性能下降的捷径。我想即使你想/需要做<code>for c in master: newstr += c</code>你可能会有更好的运气把'c'塞进一个列表,然后<code>newstr = ''.join(newstr_charlist)</code>。</p>