時(shí)間:2022-05-29 14:33:01 | 來(lái)源:網(wǎng)絡(luò)營(yíng)銷
時(shí)間:2022-05-29 14:33:01 來(lái)源:網(wǎng)絡(luò)營(yíng)銷
隨著越來(lái)越多的站長(zhǎng)對(duì)網(wǎng)站形象方面的關(guān)注,js文件也使用的越來(lái)越多了,于是乎一些細(xì)心的seo優(yōu)化人員也開(kāi)始重視JavaScript 的性能問(wèn)題了,同時(shí)也導(dǎo)致了越來(lái)越多的 JS 性能測(cè)試框架和一些工具誕生,比如說(shuō) JSLitmus、jsperf 等等,由于本人對(duì)JavaScript方面的知識(shí)掌握的也不是太深,所以今天我們?cè)趦|企邦上要探討分享的是一種比較簡(jiǎn)單、實(shí)用、容易上手的 JS 性能測(cè)試的方法。var arr = [], // 聲明一個(gè)空數(shù)組第一種方法是用for循環(huán)去累加sum變量,得到最終結(jié)果。
sum = 0; // 總和初始值
// 生成一個(gè)長(zhǎng)度是 10000 的數(shù)組
for (var index = 0, len = 10000; index<len; index++) {
arr.push(index);
}
// for 循環(huán)第二種方法是用遞歸,用數(shù)組的 shift() 方法每次刪除數(shù)組的第一個(gè)元素,并將其累加,遞歸執(zhí)行。
function forLoop(arr) {
var i = 0,
l = arr.length;
for (; i<l; i++) {
sum += arr[i];
}
}
// shift 遞歸分別執(zhí)行以上這兩個(gè)方法,其實(shí)功能都是一樣一樣的,而我們?nèi)庋蹘缀鯚o(wú)法分辨這兩者到底誰(shuí)執(zhí)行的更快,這時(shí)候我們就要用事實(shí)說(shuō)話,讓數(shù)據(jù)說(shuō)話,編寫以下簡(jiǎn)單的性能測(cè)試函數(shù),就能知道答案了。
function shiftLoop(arr) {
if (!!arr.length) {
sum += arr.shift();
arguments.callee(arr);
}
}
// 最簡(jiǎn)單的性能測(cè)試函數(shù)最后,再分別執(zhí)行剛才編寫的 test() 方法,其參數(shù)就是需要測(cè)試的方法名和該方法所用到的參數(shù):
function test(fn, param) {
var s, d;
// 記錄執(zhí)行的起始時(shí)間
s = new Date().getTime();
// 執(zhí)行待測(cè)試的方法
fn(param);
// 記錄執(zhí)行的結(jié)束時(shí)間
d = new Date().getTime();
// 輸出待測(cè)試方法所運(yùn)行的結(jié)果和耗時(shí)
alert( ‘計(jì)算結(jié)果:’ + sum + ‘,耗時(shí):’ + (d-s) + ‘毫秒’ );
}
// 分別執(zhí)行看結(jié)果在我的電腦上測(cè)試發(fā)現(xiàn),用for循環(huán)僅需 0~1 毫秒,而用shift遞歸則需要 75 毫秒左右,可見(jiàn)經(jīng)過(guò)比較得知,for循環(huán)比 shift 遞歸執(zhí)行速度更快,性能更佳!
// test(forLoop, arr);
test(shiftLoop, arr);
關(guān)鍵詞:性能,方法,執(zhí)行
客戶&案例
營(yíng)銷資訊
關(guān)于我們
客戶&案例
營(yíng)銷資訊
關(guān)于我們
微信公眾號(hào)
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。