所以我有这两个单独的javascript anagram算法。其中一个在Chrome中速度显着提高,但在Firefox和Edge中则稍慢。两种实现之间的主要区别是什么,它们使isAnagram()
在Chrome中比anagram()
快,而在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;
Edge:
使用的基准: