parser

Написать ответ на текущее сообщение

 

 
   команды управления поиском

Ответ

nkostya 29.11.2022 11:51

Справочно: скорость компиляции на i5-4570 примерно 30Mb/sec
Надо запомнить.
Возможно стоит использовать условные ^use[], чтобы не компилировать 3Mb кода на каждое обращение...
Все и так подключается через autouse.
Только основные классы framework подключаются сразу. Они грузятся за 30мс.

Дальше подключается приложение и там много Моделей (Классов).
И вот к этому моменту - еще до начала выполнения основного приложения имеем уже 100мс.

Здесь уже получается оптимизация против удобства/универсальности.
Это достаточно сложная история, поскольку результатом работы компилятора является дерево классов с выполненными методами @auto[]. Например один и тот же файл, реализующий наследника класса A, в один вызов может скомпилироваться успешно, в другой вызов не скомпилироваться, поскольку перед его использованием не сказали ^use[A.p], а в третий раз вообще скажут ^use[another/A.p], с другой реализацией методов класса A.
Мы такой подход не используем. Неявные зависимости - потом мучаешься отлаживать.
IoC еще можно, но тоже свои сложности в больших проектах.

Я так понимаю, что сейчас даже @conf и все @auto методы выполняются для каждого "подключения".

Вот если бы хотябы определенные классы, подключенные до httpd сервера повторно не требовалось компилировать.

Тогда можно было бы подключить до httpd нужные классы и сэкономить на этом.