【发布时间】:2011-09-24 05:19:53
【问题描述】:
我正在考虑在浏览器中进行一些文本处理,并试图粗略了解我是受 CPU 限制还是 I/O 限制。为了测试等式的 CPU 方面的速度,我看到了在 Javascript 中拆分一段文本(~8.9MB - 这是古腾堡项目的 Sherlock Holmes 重复多次)的速度有多快一旦它在内存中。目前我只是在做:
pieces = theText.split(" ");
并执行 100 次并取平均值。在 2011 年的 Macbook Pro i5 上,Firefox 的平均拆分时间为 92.81 毫秒,Chrome 为 237.27 毫秒。所以 CPU 上 1000/92.81ms * 8.9MB = 95.8MBps,这可能比硬盘 I/O 快一点,但不会快很多。
所以我的问题实际上是三个部分:
- 在进行简单的文本处理(例如,在空格、换行符等处分割等)时,是否有可以更快地替代
split()的 Javascript? - 我在这里看到的 CPU 结果低迷可能是由于基本的字符串匹配/算法限制,还是 Javascript 执行速度太慢?
- 如果您认为 Javascript 可能是限制因素,您能否在任何其他编程语言的可比较机器/可比较文本上展示明显更好的性能?
编辑:我也怀疑这可以通过 WebWorkers 加速,尽管目前主要对单线程方法感兴趣。
【问题讨论】:
-
为了简单的性能测试(特别是在几个浏览器中比较几个场景),你可能想使用jsperf.com。
标签: javascript regex performance split