在 system/core/Loader.php 中的第 914 行附近,Codeigniter 执行检查库是否已加载并且不会再次加载它。但是,这些检查也会消耗一些内存。为了得出哪种方式最适合加载库,我做了一个小基准测试(每次尝试后清理内存),这里的结论是:
只需正常加载库$this->load...
并让 Codeigniter 处理它
基准:
$this->load->library('session');
在 Codeigniter 会话类的初始加载后,我测试了加载库和/或执行检查是否尚未加载的各种方法。这些行中的每一行都分别执行了 20 次:
内存消耗测试(不是速度!)
if(!$this->load->is_loaded('session')) $this->load->library('session');
这消耗了 48.256 字节
if(!class_exists('ci_session')) $this->load->library('session');
这消耗了 39.824 字节
if(!isset($this->session)) $this->load->library('session');
这消耗了 31.904 字节
$this->load->library('session');
这消耗了 21.790 字节
再重复一次测试后,结果是一样的,所以我想这可能只是相关的!如果我错了请评论!
2014 年 8 月 7 日。使用 Codeigniter 2.2.0 更新:使用 1000 次迭代(而不是像以前的 20 次)重复测试。结果保持不变。内存消耗如下:2128b、1856b、1688b、1456b
@Tim Dev 在评论中指出,这个基准测试不需要显示最快的代码,而只显示最低内存消耗的代码。