2010-04-09 29 views
1

我很懶我的網站上加載我的學說類。基準測試顯示Doctrine::loadModels('models')需要超過100毫秒才能完成!我總共有118臺,但仍...學說懶加載類需要100毫秒?

設置屬性保守裝:

Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE); 

運行基準測試部分:

$CI->benchmark->mark('Doctrineload_start'); 
Doctrine::loadModels(APPPATH.'models'); 
$CI->benchmark->mark('Doctrineload_end'); 

而結果:

Doctrineload 0.1085 (seconds) 

這是'正常'?

'語境':

Loading Time Base Classes 0.0233 
Doctrineinit 0.0435 //doctrine_pi.php file, doctrine configuration + db account 
Doctrineload 0.1085 
Masterpageset 0.0001 
Userload 0.1208 //1 db query 
Masterpageaddcontent 0.1565 //1 db query, loading view with some <?=?> php parsing 
Masterpageshow  0.0203 //loading view 
Controller Execution Time (Home/Index)  0.3591 
Total Execution Time 0.3826 

回答

5

您是否使用了指令緩存系統,如APC或XCache將?如果沒有,你應該考慮安裝一個。使用像Doctrine這樣的更大的框架和庫時,您會看到顯着的改進。 PHP在每次請求重新編譯生成響應所需的所有文件時花費的時間不是很多。使用操作碼緩存將大大減少這種開銷。

APC最終將被包含在PHP中,如果它的維護者是Rasmus Lerdorf,那麼它本身就是一個,它似乎是一個非常受歡迎的系統。請參閱:http://pecl.php.net/package/APC

XCache由lighttpd的創建者編寫,它似乎是一個非常可行的選項,雖然我有一段時間沒有使用它。請參閱:http://xcache.lighttpd.net/

+0

不,我們還沒有使用。我知道Doctrine有一個內置的編譯功能。我會試試這個。謝謝! – Ropstah 2010-04-10 10:45:59

+0

作爲後續工作:您是否已經安裝了緩存系統?如果是這樣,你有沒有經歷過任何改進? – 2010-09-27 21:55:19

0

請記住,Doctrine彙編只是給你一個更緊湊版本的原始php文件,這將減少PHP解釋器解析源代碼所需的時間。它不轉換爲字節碼。所以字節碼緩存仍然會增加很多價值。