之前看到有通过 for 循环比较 chrome 和firefox的, 巧合的是,我也正遇到一个问题需要看下 各个浏览器性能问题
我使用 win7 32 位 测试对比 chrome 39 和 firefox 34
首先使用的是 网上流传的一个测试方案:(实际测试的代码和下面这份有点不同,不过 不同浏览器是测试同一份代码的)
function _test1() { //test document.cookie for(var i=0;i<100000;i++) { var a = document.cookie; } } document.getElementById(‘btn1‘).onclick = function(){ var a = 1; console.time(‘firstEnterInterval‘); var flag = setInterval(function(){ if (a>2) { clearInterval(flag) } console.timeEnd(‘firstEnterInterval‘); console.timeEnd(‘othersEnterInterval‘); console.time(‘othersEnterInterval‘); console.time(‘funTime‘); _test1(); console.timeEnd(‘funTime‘); a++; }, 100); }
上面的方法 测试结果如下:
chrome
firstEnterInterval: 100.819ms funTime: 9567.461ms othersEnterInterval: 9568.050ms funTime: 9098.395ms othersEnterInterval: 9098.593ms
firefox
firstEnterInterval: 101.11ms funTime: 682.67ms othersEnterInterval: 686.29ms funTime: 666.68ms othersEnterInterval: 678.58ms
大致是上面的结果
但不要因为这一个测试就下结论 chrome不如 firefox,下面是我做的另外两个 函数测试:
把上面测试 函数 _test1 () 替换为下面的 buildArr1()
function buildArr() { var a = []; for (var i = 0; i < 1000000; i++) { a[i] = i; } return a; }
chrome
firstEnterInterval: 100.299ms
funTime: 57.955ms
othersEnterInterval: 100.033ms
funTime: 44.056ms
othersEnterInterval: 100.430ms
funTime: 46.589ms
firefox
firstEnterInterval: 101ms
funTime: 36ms
othersEnterInterval: 96ms
funTime: 40ms
othersEnterInterval: 98ms
funTime: 34ms
chrome 好像不像之前那么不堪了。 我又测试了 buildArr2()
function buildArr2() { var a = []; for (var i = 0; i < 10000; i++) { for (var j = 0; j < 10000; j++) { a[j] = j; } } return a; }
chrome
firstEnterInterval: 100.300ms
funTime: 325.477ms
othersEnterInterval: 325.826ms
funTime: 315.287ms
othersEnterInterval: 319.463ms
funTime: 323.113ms
firefox:
firstEnterInterval: 100ms funTime: 3233ms othersEnterInterval: 3241ms funTime: 3217ms othersEnterInterval: 3225ms funTime: 3192ms
chrome 又变成了性能好的那个
而实际中,我遇到的具体问题,就是因为需要在写两个for循环的时候, 觉得 firefox 的性能明显不佳,现在还没有查出原因