2010-12-09 54 views
2

我想知道用於測量在不同階段的CGI Perl代碼執行持續時間的技術(編碼,庫,配置):如何在執行的各個階段執行perl CGI性能測量,基準測量和時間測量?

  1. 啓動Perl解釋
  2. 開始運行Perl代碼
  3. 裝載在本地Perl的.pm模塊程序
  4. 完成運行代碼

我在3,4特別感興趣,我不知道我相信我可以做很多1)或2),因爲我不想嘗試優化Perl解釋器,我唯一能做的就是將硬件升級到更快的機器和/或使用mod_perl而不是經典CGI。

與3)加載本地Perl模塊我想測量它需要多長時間,但我不知道如何編碼,因爲我不知道(或不確定)如何獲取代碼執行之前加載這些模塊。如果我知道,那麼我會在加載之前記錄時間,然後記錄加載後的時間並計算差異。

4)應該是最容易獲得的,因爲我會在開始執行時記錄時間(在變量中),然後記錄下結束時間。

我已經做在一個stackoverflow.com搜索和發現:

谷歌的搜索結果包括:

回答

4

可以FastCGI的減少1)。它也會減少階段2)和3)。

對於測量3)可以使用BEGIN塊。例如:

use Benchmark ':hireswallclock'; 
my ($t0,$t1); 
BEGIN {$t0 = Benchmark->new;} 
use DBIx::Class; 
BEGIN {$t1 = Benchmark->new;} 
print "the loading took:",timestr(timediff($t1, $t0)),"\n"; 

Deve :: NYTProf將幫助你4)。還有像Template :: Timer,CGI :: Application :: Plugin :: DevPopup :: Timing,DBIx :: Class :: Storage :: Statistics等特定模塊。

+0

+1和接受的答案 - 幾乎所有我需要的。謝謝@Alexandr Ciornii – therobyouknow 2010-12-09 16:32:15

2

除了FastCGI,還有mod_perl,更重要的是PSGI。通過PSGI,您可以將應用程序與具體的Web服務器後端分離。

+0

+1可供選擇 – therobyouknow 2010-12-09 17:01:18