javascript - 在 Javascript 中以空格拆分文本文件的最快方法

标签 javascript regex performance split

我正在考虑在浏览器中进行一些文本处理,并试图对我是受 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/

相关文章:

javascript - 在 Node 中使用 d3 读取 csv 数据的最佳实践。为什么会出现 TypeError?

javascript - AngularJS 自定义指令与 ngModel 绑定(bind)不起作用

javascript - 从其他网站重定向时,如何检查浏览器窗口中是否加载了网页?

c++ - 如何(有效地)插入以 map 为值的 map ?

javascript - node.js 日志模块 bunyan 更改时区

regex - 正则表达式匹配用冒号连接的单词对

regex - Unix 查找通配符目录结构

regex - linux - 如何将 sed 与正则表达式一起使用

java - 套接字写入与磁盘写入的性能

java - hibernate 性能