ltd*_*dev 6 php codeigniter libraries codeigniter-classloader
我想要做的是加载库,如果它们尚未加载(CI的库,或者是自定义的库)在网站的许多不同点上.所以我想对此进行检查.
我已经在Loader库上搜索并找到了is_loaded()函数,所以我可以这样做:
if ($this->load->is_loaded('form_validation') === false) {
$this->load->library('form_validation');
}
Run Code Online (Sandbox Code Playgroud)
这个奇怪的事情(启用了探查器)是内存上升,这让我想知道这是不是正确的方式.
Hrv*_*cic 17
在system/core/Loader.php的第914行附近,Codeigniter执行检查库是否已加载且不会再次加载库.但是,这些检查也会占用一些内存.为了总结哪种方式最适合加载库,我做了一点基准测试(每次尝试后清理内存),这里的结论是:
只需正常加载库,
$this->load...然后让Codeigniter处理它
基准测试:
$this->load->library('session');
Run Code Online (Sandbox Code Playgroud)
在初始加载Codeigniter会话类之后,我测试了各种加载库和/或检查它是否已经加载的方法.这些行中的每一行分别执行20次:
记忆消耗测试(不是速度!)
if(!$this->load->is_loaded('session')) $this->load->library('session');
Run Code Online (Sandbox Code Playgroud)
这消耗了48.256个字节
if(!class_exists('ci_session')) $this->load->library('session');
Run Code Online (Sandbox Code Playgroud)
这消耗了39.824bytes
if(!isset($this->session)) $this->load->library('session');
Run Code Online (Sandbox Code Playgroud)
这消耗了31.904bytes
$this->load->library('session');
Run Code Online (Sandbox Code Playgroud)
这消耗了21.790bytes
重复测试一次后,结果是一样的,所以我猜它可能是相关的!如果我错了请评论!
2014年7月8日.使用Codeigniter 2.2.0进行更新:使用1000次迭代(不像以前那样20次)重复测试.结果保持不变.内存消耗如下:2128b,1856b,1688b,1456b
@Tim Dev在评论中指出,该基准测试不需要显示最快的代码,但只显示最低的内存消耗代码.
| 归档时间: |
|
| 查看次数: |
5451 次 |
| 最近记录: |