W3Cschool
恭喜您成為首批注冊用戶
獲得88經驗值獎勵
CodeIgniter 提供了兩個獨立的工具來幫助你對代碼進行基準測試,并測試不同的選項:Timer 和 Iterator。Timer 允許你輕松計算腳本執(zhí)行中兩點之間的時間。迭代器允許你設置多個變量并運行這些測試,記錄性能和內存統(tǒng)計信息,以幫助你確定哪個版本是最佳的。
Timer類始終處于活動狀態(tài),從框架被調用的那一刻開始,直到發(fā)送輸出到用戶之前,才能使整個系統(tǒng)執(zhí)行的時間非常準確。
使用Timer,你可以測量執(zhí)行應用程序的兩個時刻之間的時間。這樣可以輕松測量應用程序的不同方面的性能。所有測量都是使用 start()
和 stop()
方法完成的。
該 start()
方法采用單個參數(shù):此定時器的名稱。你可以使用任何字符串作為計時器的名稱。它僅用于你以后參考以了解哪個測量是:
$benchmark = \Config\Services::timer();
$benchmark->start('render view');
該 stop()
方法將要停止的計時器的名稱作為唯一的參數(shù),也是::
$benchmark->stop(‘render view’);
該名稱不區(qū)分大小寫,但除此之外必須與你在啟動計時器時給出的名稱相匹配。
或者,你可以使用 全局函數(shù) timer()
來啟動和停止定時器:
// Start the timer
timer('render view');
// Stop a running timer,
// if one of this name has been started
timer('render view');
當你的應用程序運行時,你設置的所有定時器都將由Timer類收集。它不會自動顯示它們。你可以通過調用 getTimers()
方法檢索所有的計時器。該方法返回一組基準信息,包括開始,結束和持續(xù)時間:
$timers = $benchmark->getTimers();
// Timers =
array(
'render view' => array(
'start' => 1234567890,
'end' => 1345678920,
'duration' => 15.4315 // number of seconds
)
)
你可以通過傳遞要顯示的小數(shù)位數(shù)作為唯一參數(shù)來更改計算持續(xù)時間的精度。默認值為小數(shù)點后面的 4 個數(shù)字:
$timers = $benchmark->getTimers(6);
計時器會自動顯示在 Debub 工具欄中。
該 getTimers()
方法將為你的項目中的所有計時器提供原始數(shù)據(jù),你可以使用 getElapsedTime()
方法檢索單個計時器的持續(xù)時間(以秒為單位)。第一個參數(shù)是要顯示的定時器的名稱。第二個是要顯示的小數(shù)位數(shù)。默認為4:
echo timer()->getElapsedTime('render view');
// Displays: 0.0234
Iterator是一個簡單的工具,旨在讓你嘗試解決方案中的多個變體,以查看速度差異和不同內存使用模式。你可以添加任何數(shù)量的 “任務”,以便運行,該類將運行任務數(shù)百或數(shù)千次以獲得更清晰的性能。然后,你的腳本可以檢索和使用結果,或顯示為HTML表格。
任務在 Closures 內定義。任務創(chuàng)建的任何輸出將被自動丟棄。它們通過 add() 方法添加到 Iterator 類中。第一個參數(shù)是您想要引用這個測試的名稱;第二個參數(shù)是 Closure,它自己本身:
$iterator = new \CodeIgniter\Benchmark\Iterator();
// Add a new task
$iterator->add('single_concat', function()
{
$str = 'Some basic'.'little'.'string concatenation test.';
}
);
// Add another task
$iterator->add('double', function($a='little')
{
$str = "Some basic {$little} string test.";
}
);
你一旦添加了要運行的任務,你可以使用 run()
方法多次循環(huán)任務。默認情況下,它將循環(huán)運行 1000 次。這對大多數(shù)簡單的測試來說可能就足夠了,如果你需要運行測試多次,你可以將你希望運行數(shù)字作為第一個參數(shù)傳遞值:
// Run the tests 3000 times.
$iterator->run(3000);
一旦運行,它將返回帶有測試結果的 HTML 表格。如果你不希望顯示結果,可以通過傳遞第二個參數(shù)為 false:
// Don't display the results.
$iterator->run(1000, false);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: