繁体   English   中英

JavaScript 字符串拆分:固定宽度与分隔性能

[英]JavaScript String split: fixed-width vs. delimited performance

我正在构建一个字符串,由 JavaScript 解析为一个数组。 我可以将其分隔,也可以将字段设为固定宽度。 为了测试它,我使用数据字符串构建了这个 jsperf 测试,其中字段都是固定宽度和逗号分隔的:

https://jsperf.com/string-split-fixed

我只在 Windows 上使用 Firefox 和 Chrome 进行过测试,所以请在其他操作系统和浏览器上运行测试。 我的两个测试结果很清楚: String.prototype.split()是赢家。

是我的固定宽度代码不够高效,还是内置的字符串拆分功能只是优越? 有没有办法对其进行编码,以便固定宽度的解析成功? 如果这是 C/C++,那么正确编写的固定宽度代码将是明显的赢家。 但我知道 JavaScript 是一个完全不同的野兽。

String.prototype.split()是一个内置的 JavaScript 函数。 期望它针对特定的 JS 引擎进行高度优化,并且不是用 JavaScript 而是用 C++ 编写。

因此,您无法将其性能与纯 JavaScript 代码相匹配也就不足为奇了。

字符串操作(如拆分分隔字符串)本质上是受内存限制的。 因此,知道分隔符的位置并没有多大帮助,因为整个字符串仍然需要至少遍历一次(以复制分隔的片段)。 对于超过 D-cache 大小的字符串,固定位置拆分可能会更快,但您的字符串只有 13KB 长,因此多次遍历它无关紧要。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM