Doctrine延迟加载类需要100毫秒?

Rop*_*tah 1 php doctrine lazy-loading

我懒得在我的网站上加载我的Doctrine课程.基准测试表明Doctrine::loadModels('models')完成需要100多毫秒!我总共有118张桌子,但还是......

将属性设置为保守加载:

Doctrine_Manager::getInstance()->setAttribute(Doctrine::ATTR_MODEL_LOADING, Doctrine::MODEL_LOADING_CONSERVATIVE);
Run Code Online (Sandbox Code Playgroud)

运行基准测试部分:

$CI->benchmark->mark('Doctrineload_start');
Doctrine::loadModels(APPPATH.'models');
$CI->benchmark->mark('Doctrineload_end');
Run Code Online (Sandbox Code Playgroud)

结果如下:

Doctrineload    0.1085 (seconds)
Run Code Online (Sandbox Code Playgroud)

这是'正常'吗?

"语境":

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
Run Code Online (Sandbox Code Playgroud)

awg*_*wgy 5

您使用的是像APC或xcache这样的操作码缓存系统吗?如果没有,你应该考虑安装一个.当使用像Doctrine这样的大型框架和库时,你会看到一个显着的改进.PHP会在每个请求重新编译生成响应所需的所有文件时花费大量时间.使用操作码缓存可以大大减少这种开销.

APC最终将被包含在PHP中,如果它的维护者是Rasmus Lerdorf本人,那么它似乎是一个非常受欢迎的系统.请参阅:http://pecl.php.net/package/APC

XCache是​​由lighttpd的创建者编写的,它似乎是一个非常可行的选择,虽然我有一段时间没有使用它.请参阅:http://xcache.lighttpd.net/