在Javascript中以空格分割文本文件的最快方法

时间:2011-09-24 05:19:54

标签: javascript regex performance split

我正在寻找在浏览器中进行一些文本处理,并试图获得一个粗略的想法,即我将是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替代品在进行简单的文本处理时会更快(例如在空格,换行符等处拆分)吗?
  • 我在这里看到的乏味的CPU结果可能是由于基本的字符串匹配/算法限制,还是Javascript执行速度很慢?
  • 如果您认为Javascript可能是限制因素,您是否可以在任何其他编程语言的同类机器/类似文本上表现出更好的性能?

编辑:我也怀疑这可能会加速WebWorkers,但现在我主要对单线程方法感兴趣。

1 个答案:

答案 0 :(得分:2)

据我所知,使用for循环分割是在javascript中进行简单文本处理的最快方法。它比正则表达式更快,这里是jsperf http://jsperf.com/query-str-parsing-regex-vs-split/2

的链接