Javascript 在这种情况下,lastIndexOf()如何比indexOf()更好?
下面是Google从闭包库中获取的Javascript 在这种情况下,lastIndexOf()如何比indexOf()更好?,javascript,indexof,google-closure-library,lastindexof,Javascript,Indexof,Google Closure Library,Lastindexof,下面是Google从闭包库中获取的String.startsWith()的实现: goog.string.startsWith = function(str, prefix) { return str.lastIndexOf(prefix, 0) == 0; }; 我想知道为什么他们选择了lastIndexOf而不是indexOf,因为: 在某些情况下,indexOf的速度是前者的两倍 浏览器兼容性是相同的 这与微观优化无关,我真的相信: return str.indexOf(prefi
String.startsWith()
的实现:
goog.string.startsWith = function(str, prefix) {
return str.lastIndexOf(prefix, 0) == 0;
};
我想知道为什么他们选择了lastIndexOf
而不是indexOf
,因为:
indexOf
的速度是前者的两倍return str.indexOf(prefix) == 0;
更简单、更干净,而且比:
return str.lastIndexOf(prefix, 0) == 0;
在这种情况下,
lastIndexOf
如何更好?度量对于这类问题来说非常酷,我在这里为您创建了一个,可能会帮助您回答以下问题:
根据这一点,indexOf只是稍微快一点。当然,它确实取决于您正在索引的内容 IndexOf查找第一个匹配项,lastIndexOf返回最后一个匹配项。总而言之,它们现在的功能比map好得多
不过老实说,如果谷歌正在使用它,可能有一个很好的理由。
lastIndexOf
理论上应该更快。显示lastIndexOf()
实际上比indexOf()
@SheshankS慢96%。1.这不是我的问题2。在将某个问题标记为问题之前,不仅要阅读问题标题,还要阅读其内容,这是有意义的duplicate@SheshankS. 可能吧,但仅仅因为标题共享的单词很少并不意味着问题是重复的。请随意推荐一个更好的标题。您可能想看看这里:,以及它下面的解决方案(以及第二个答案)。也就是说,当你问“我想知道他们为什么选择……”时,你的问题自动基于观点,因为这是该团队的选择。然而,如果你问的是性能差异,我相信我链接的问题是一个很好的重复目标(因为我提到了两个答案)。这甚至没有回答这个问题。“根据这一点,indexOf只是稍微快一点。”---根据这一点,它表明基准测试的实现很差,并且被虚拟机优化了。呃,它有点‘indexOf在某些情况下是两倍的速度’。这表明它不是lol。我的意思是,除此之外,这两个函数是不同的。“呃,它有点‘indexOf在某些情况下是两倍的速度’,”---它没有,后者的速度是前者的100倍,每秒运行800M次,这表明了优化的效果:你的测试只表明你什么都跑不快。这很有趣,我想你实际上得到了不同的结果,我在Mac上使用Safari,Chrome和Safari可能不同。顺便说一句,这不是我的网站,只是我知道的一个网站。