我正在寻找在浏览器中进行一些文本处理,并试图获得一个粗略的想法,即我将是CPU绑定还是I / O绑定。为了测试等式的CPU方面的速度,我看到我在Javascript中分割一段文本(~8.9MB - 这是Project Gutenberg的 Sherlock Holmes 重复多次)的速度有多快一旦它在记忆中。目前我只是在做:
pieces = theText.split(" ");
并执行100次并取平均值。在2011 Macbook Pro i5上,Firefox平均分为92.81ms,Chrome为237.27ms。因此CPU上1000 / 92.81ms * 8.9MB = 95.8MBps,这可能比硬盘I / O快一点,但不是很多。
所以我的问题实际上是三个部分:
split()
的Javascript替代品在进行简单的文本处理时会更快(例如在空格,换行符等处拆分)吗?编辑:我也怀疑这可能会加速WebWorkers,但现在我主要对单线程方法感兴趣。
答案 0 :(得分:2)
据我所知,使用for循环分割是在javascript中进行简单文本处理的最快方法。它比正则表达式更快,这里是jsperf http://jsperf.com/query-str-parsing-regex-vs-split/2
的链接