我试图找出哪个更具性能:
let array = [1,2,3,4]
array.includes(4)
或
let str = "1234";
str.includes(4);
并试图通过执行:
找到它console.time();
let ar = [1,2,3,4,5];
ar.includes(4);
console.timeEnd();
console.time();
let str = "12345";
str.includes("4");
console.timeEnd();
在控制台中和页面内的脚本中。当从控制台直接执行时,时间是这样的,array.includes占用的时间最少。从页面执行时,报告的时间使得string.includes花费的时间更少。是什么给了什么?!
答案 0 :(得分:6)
使用少量值进行测试:
结论:array.includes
比string.includes
然后我尝试将值的数量增加到~100 :
结果相同:array.includes
比string.includes
如果您对实现算法感兴趣,可以在这里查看:
PS:在你的情况下,我认为变量声明在Array Incldues测试中比在字符串声明中花费更多时间。如果您将声明移出计时器,您还应该看到一致的结果。
字符串声明占用声明数组所需的时间的1/10
答案 1 :(得分:2)
基于不同浏览器平台上的基准测试,这一切都取决于该平台上的Javascript引擎和运行时元素(Windows,Mac或Ubuntu)
Mac OS上的Chrome在Safari Mac OS上的速度比Array.includes
快String.includes
。(jsperf.com测试用例由 @shashanka n 创建)
和Mac OS string.includes
上的Node v8.0.0似乎比Array.includes
快,结果如下
节点测试用例源代码:
let ar = [1,2,3,4,5];
console.time("Array");
ar.includes(4);
console.timeEnd("Array");
let str = "1,2,3,4,5";
console.time("String");
str.includes("4");
console.timeEnd("String");
有时测试用例歧义可能会导致不同的结果。没有明确的方法来确定API的性能,我们只需要花费几毫秒的时间就可以使用它,直到真正重要或者阻碍大规模的性能为止。
答案 2 :(得分:0)
我使用字符串而不是数字进行了测试,因为一个重要因素是数字/字符串转换。
数组仍然要快得多...
这是我的2个测试用例
var ar = ['a','b','c', 'd', 'e'];
var str = "abcde";