性能調(diào)試
開發(fā)過程中,有些時(shí)候?yàn)榱藴y(cè)試性能,經(jīng)常需要調(diào)試某段代碼的運(yùn)行時(shí)間或者內(nèi)存占用開銷,系統(tǒng)提供了think\Debug
類可以很方便的獲取某個(gè)區(qū)間的運(yùn)行時(shí)間和內(nèi)存占用情況。 例如:
Debug::remark('begin');
// ...其他代碼段
Debug::remark('end');
// ...也許這里還有其他代碼
// 進(jìn)行統(tǒng)計(jì)區(qū)間
echo Debug::getRangeTime('begin','end').'s';
表示統(tǒng)計(jì)begin位置到end位置的執(zhí)行時(shí)間(單位是秒),begin必須是一個(gè)已經(jīng)標(biāo)記過的位置,如果這個(gè)時(shí)候end位置還沒被標(biāo)記過,則會(huì)自動(dòng)把當(dāng)前位置標(biāo)記為end標(biāo)簽,輸出的結(jié)果類似于:0.0056s
默認(rèn)的統(tǒng)計(jì)精度是小數(shù)點(diǎn)后4位,如果覺得這個(gè)統(tǒng)計(jì)精度不夠,還可以設(shè)置例如:
echo Debug::getRangeTime('begin','end',6).'s';
可能的輸出會(huì)變成:0.005587s
如果你的環(huán)境支持內(nèi)存占用統(tǒng)計(jì)的話,還可以使用getRangeMem
方法進(jìn)行區(qū)間內(nèi)存開銷統(tǒng)計(jì)(單位為kb),例如:
echo Debug::getRangeMem('begin','end').'kb';
第三個(gè)參數(shù)使用m表示進(jìn)行內(nèi)存開銷統(tǒng)計(jì),輸出的結(jié)果可能是:625kb
同樣,如果end標(biāo)簽沒有被標(biāo)記的話,會(huì)自動(dòng)把當(dāng)前位置先標(biāo)記位end標(biāo)簽。
助手函數(shù)
系統(tǒng)還提供了助手函數(shù)debug
用于完成相同的作用,上面的代碼可以改成:
debug('begin');
// ...其他代碼段
debug('end');
// ...也許這里還有其他代碼
// 進(jìn)行統(tǒng)計(jì)區(qū)間
echo debug('begin','end').'s';
echo debug('begin','end',6).'s';
echo debug('begin','end','m').'kb';