今天写一个性能敏感的函数发现的这个有趣结果,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 some
按我理解 js RunTime 应该是更高性能语言的实现(如 C 等),那么原生 some 方法性能应该更高呀。
[].some --> ƒ some() { [native code] }
lodash some
lodash 的 some 源码在这 https://github.com/lodash/lodash/blob/master/some.js,也仅仅是很普通的 while 遍历,不知道为啥性能这么好。