内容简介:自动加载器在一个大型PHP项目中,往往是最容易被忽视的性能点,因为它一般而言都很简单, 但是它的调用次数确实非常之大。经过周末的一番重构,我基本上重写了Yaf_Loader::autoload整条生命期, 目的就是降低内存分配,具体的变化可以看:这个虽然类文件不存在,但是会走过整个Yaf_Loader::autoload的代码路径,只不过在最后载入文件的时候会失败,并不影响我们整体的性能对比测试。
自动加载器在一个大型 PHP 项目中,往往是最容易被忽视的性能点,因为它一般而言都很简单, 但是它的调用次数确实非常之大。 Yaf 也不例外,虽然 Yaf 是 C语言 写的扩展,但还是可能会占到一个复杂项目1%到3%的耗时,这俩天想了想,总不能天天开会写博客吧,还是写点代码吧?于是乎决定启动重构。:)
经过周末的一番重构,我基本上重写了Yaf_Loader::autoload整条生命期, 目的就是降低内存分配,具体的变化可以看: Refactor Yaf_Loader , 效果咋样? 我们来做个简单的测试:
<?php
error_reporting(0);
$loader = Yaf_Loader::getInstance(__DIR__);
$i = 0;
$start = microtime(true);
while ($i++ < 10000) {
$classname = "A" . rand(1, 1000000);
$loader->autoload($classname);
$classname = "B" . rand(1, 1000000) . "Controller";
$loader->autoload($classname);
$classname = "C" . rand(1, 1000000) . "Model";
$loader->autoload($classname);
$classname = "D" . rand(1, 1000000) . "Plugin";
$loader->autoload($classname);
}
echo "Time: " , microtime(true) - $start, "s\n";
这个虽然类文件不存在,但是会走过整个Yaf_Loader::autoload的代码路径,只不过在最后载入文件的时候会失败,并不影响我们整体的性能对比测试。
重构前的Yaf_Loader:
Time: 0.5350558757782s
重构后的Yaf_Loader:
Time: 0.48561215400696s
性能提升了将近10% :)
以上所述就是小编给大家介绍的《Yaf_Loader重构测试》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!
猜你喜欢:- APP重构之路(三) 引入单元测试
- “流量回放” 在系统重构中的测试实践
- 《Java8实战》-第八章笔记(重构、测试和调试)
- LuckyFrame V3.0 Beta 重构版本发布,一站式自动化测试平台
- LuckyFrame V3.0 Beta 重构版本发布,一站式自动化测试平台
- Airbnb 的前端重构
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Web Designer's Idea Book
Patrick Mcneil / How / 2008-10-6 / USD 25.00
The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!