Почему Chrome значительно отличается по производительности от Firefox или Edge для этих алгоритмов анаграммы? - PullRequest
0 голосов
/ 19 февраля 2019

Итак, у меня есть эти два отдельных алгоритма jaascript anagram.Один из них значительно быстрее в Chrome, но незначительно медленнее в Firefox и Edge.В чем основное различие между реализациями, которое делает isAnagram() быстрее, чем anagram() в Chrome, но медленнее в Firefox и Edge?

function isAnagram(word1, word2) {
    if(word1.length != word2.length){
        return false;
    }
    for(var i = 0; i < word1.length; i++){
        var letteridx = word2.indexOf(word1[i]);
        if(letteridx === -1){
            return false;
        }
        var firsthalf = word2.slice(0, letteridx);
        var secondhalf = word2.slice(letteridx + 1, word2.length);
        word2 = firsthalf + secondhalf;
    }
    if(word2.length === 0){
        return true;
    }
    return false;
}

function anagram(w1, w2){
    return w1.split("").sort().join("") === w2.split("").sort().join("");
}
var words1 = ["dog", "cat","tacocat", "silent", "tacocatt", "abcdefghijklmnopqrstuvwxyz","Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.", "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum." ];
var words2 = ["god", "bird", "tacocat", "listen", "tacocat", "zyxwvutsrqponmlkjihgfedcba", ".murobal tse di mina tillom tnuresed aiciffo iuq apluc ni tnus ,tnediorp non tatadipuc taceacco tnis ruetpecxE .rutairap allun taiguf ue erolod mullic esse tilev etatpulov ni tiredneherper ni rolod eruri etua siuD .tauqesnoc odommoc ae xe piuqila tu isin sirobal ocmallu noitaticrexe durtson siuq ,mainev minim da mine tU .auqila angam erolod te erobal tu tnudidicni ropmet domsuie od des ,tile gnicsipida rutetcesnoc ,tema tis rolod muspi meroL", ".murobal tse di mina tillom tnuresed aiciffo iuq apluc ni tnus ,tnediorp non tatadipuc taceacco tnis ruetpecxE .rutairap alkun taiguf ue erolod mullic esse tilev etatpulov ni tiredneherper ni rolod eruri etua siuD .tauqesnoc odommoc ae xe piuqila tu isin sirobal ocmallu noitaticrexe durtson siuq ,mainev minim da mine tU .auqila angam erolod te erobal tu tnudidicni ropmet domsuie od des ,tile gnicsipida rutetcesnoc ,tema tis rolod muspi meroL"];
var x;

Chrome : enter image description here

Firefox : enter image description here

Edge : enter image description here

Используемые критерии:

https://jsperf.com/anagramtest

http://jsben.ch/NQLvJ

...