Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在这种情况下,lastIndexOf()如何比indexOf()更好?_Javascript_Indexof_Google Closure Library_Lastindexof - Fatal编程技术网

Javascript 在这种情况下,lastIndexOf()如何比indexOf()更好?

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

下面是Google从闭包库中获取的
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可能不同。顺便说一句,这不是我的网站,只是我知道的一个网站。