我正在考虑在浏览器中进行一些文本处理,并试图对我是受 CPU 限制还是 I/O 限制有一个粗略的想法。为了测试等式的 CPU 端的速度,我看到了我在 Javascript 中拆分一段文本的速度(~8.9MB - 这是古腾堡计划的 夏洛克福尔摩斯 重复了很多次)一旦它在内存中。目前我只是在做:
pieces = theText.split(" ");
并执行 100 次并取平均值。在 2011 款 Macbook Pro i5 上,Firefox 的平均分割时间为 92.81 毫秒,Chrome 为 237.27 毫秒。所以 1000/92.81ms * 8.9MB = 95.8MBps 在 CPU 上,这可能比硬盘 I/O 快一点,但不会快很多。
所以我的问题实际上分为三个部分:
- 是否有
split()
的 Javascript 替代品在进行简单的文本处理(例如,在空格、换行符等处拆分等)时往往更快? - 我在这里看到的低迷 CPU 结果可能是由于基本的字符串匹配/算法限制,还是 Javascript 执行速度很慢?
- 如果您认为 Javascript 可能是限制因素,您能否在任何其他编程语言的可比机器/可比文本上展示更好的性能?
编辑:我还怀疑这可以通过 WebWorkers 加速,尽管目前我主要对单线程方法感兴趣。
最佳答案
据我所知,用 for 循环拆分是在 javascript 中进行简单文本处理的最快方法。它比正则表达式更快,这里是 jsperf 的链接 http://jsperf.com/query-str-parsing-regex-vs-split/2
关于javascript - 在 Javascript 中以空格拆分文本文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7537214/