基础算法
数据库
Javascript
HTML 编程
SVG
附录
这是一个在 PQL 解析过程中遇到一个大字符串处理的效率问题,这个大字符串文本保存在文件中,大约 1.5M。原始程序是这样的:
其中:
blocks
是一个先进后出的栈 ArrayStack,里面存着大字符串文本中解析出来的子字符串信息,主要是子字符串在大字符串文本中的开始位置和结束位置replacement
。before
,再根据结束位置取大字符串后面的内容after
,最后再和要替换的内容一起拼接成一个新字符串。在整个字符串长度相对短时,这个程序的效率没多大问题。但当整个字符串特别大且blocks
中要截取子字符串特别多时,这是一个不断拼接大字符串的操作,且每次都给变量sentence
重新赋值。整个过程计时 227283 毫秒,接近 4 分钟!
这是我之前写的代码,脸红啊!优化后的代码如下:
解释:
reverse
。sentence
。优化后耗时为 87 毫秒!效率提升千倍不止。
(本文完)