CodeIgniter – загружать библиотеки, если они еще не загружены

Я пытаюсь загрузить библиотеки, если они еще не загружены (либо библиотеки CI, либо пользовательские) во многих разных точках веб-сайта. Поэтому я хочу проверить это.

Я выполнил поиск в библиотеке Loader и нашел функцию is_loaded (), поэтому я мог бы сделать это, например:

if ($this->load->is_loaded('form_validation') === false) { $this->load->library('form_validation'); } 

Странная вещь с этим (с включенным профилировщиком) заключается в том, что память поднимается, что заставляет меня задаваться вопросом, правильно ли это или нет.

Вокруг строки 914 в system / core / Loader.php, 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 байт


После повторения теста еще раз, результаты были одинаковыми, поэтому я думаю, что это может быть просто актуально! Прошу прокомментировать, если я ошибаюсь!


07.08.2014. UPDATE с использованием Codeigniter 2.2.0: тест повторялся с использованием 1000 итераций (не 20, как раньше). Результаты остаются неизменными. Потребление памяти было следующим: 2128b, 1856b, 1688b, 1456b

@Tim Dev отмечает в комментарии, что этот тест не нужен, показывает самый быстрый код, но только самый низкий код потребления памяти.