今天写一个性能敏感的函数发现的这个有趣结果,lodash some
的性能是 js some
性能的几倍。
我觉得标题加个 [震惊] 都不为过~ /dogo
const testArr = new Array(50_000_000).fill({ a: 1, b: 2, c: 3 });
console.time('es');
const x = testArr.some(v => v.a === 9 && v.b === 9 && v.c === 9);
console.timeEnd('es');
console.time('lodash');
const y = _.some(testArr, v => v.a === 9 && v.b === 9 && v.c === 9);
console.timeEnd('lodash');
// es: 590.248046875 ms
// lodash: 219.496826171875 ms
可以在 https://lodash.com/ 的 F12 中直接测试,我在 node16 环境下结果也一致,lodash-some 性能是 js-some 的几倍
按我理解 js RunTime 应该是更高性能语言的实现(如 C 等),那么原生 some 方法性能应该更高呀。
[].some --> ƒ some() { [native code] }
lodash
的 some 源码在这 https://github.com/lodash/lodash/blob/master/some.js
,也仅仅是很普通的 while 遍历,不知道为啥性能这么好。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.