-
-
Notifications
You must be signed in to change notification settings - Fork 1
Feature Profiling
Встроенный профайлер тайминга разрешения сервисов: сколько времени заняли get / make / call, что было из кэша, кто самый медленный. Уникальная для CloudCastle возможность среди сравниваемых контейнеров.
enableProfiling() включает ContainerProfilingSupport: контейнер оборачивает разрешение в тайминг, помечая операцию (get/make/call), цель (id) и был ли результат из кэша (cached). profileReport() агрегирует: количество и суммарное время по операциям + топ самых медленных. Включение профилирования отключает fast-path get() (нужен трекинг), поэтому это dev/диагностический режим.
$c->enableProfiling();
$c->get(Db::class);
$c->make(Report::class);
$report = $c->profileReport();
// [
// 'enabled' => true,
// 'sample_count' => 2,
// 'by_operation' => ['get' => ['count' => 1, 'total_ms' => …], 'make' => […]],
// 'top_slowest' => [['operation' => 'make', 'target' => 'Report', 'elapsed_ms' => …, 'cached' => false], …],
// ]
$c->resetProfile();
$c->disableProfiling();- Находит узкие места сборки: какой сервис долго создаётся, что зря пересоздаётся.
- Различает cached/uncached — видно эффективность singleton-кэша.
- Не требует внешних профайлеров для базовой диагностики графа.
- Отключает fast-path
get()(трекинг стоит времени) — не для прода под нагрузкой. - Тайминги в шумной среде приблизительны (для точных цифр — изолированные бенчмарки).
- Включать в dev/staging при разборе «почему сборка медленная», затем выключать.
- Смотреть
top_slowestиby_operationдля приоритезации оптимизаций.
- Держать профилирование включённым в проде на горячем пути — теряется весь perf-выигрыш контейнера.
- Делать выводы о микросекундах по одному прогону в нагруженной среде.
| Контейнер | Аналог |
|---|---|
| PHP-DI | нет встроенного (❌ — внешние профайлеры) |
| Symfony | data collector / profiler bar (в fullstack, |
| Laravel | нет встроенного в контейнер (❌) |
| Pimple | нет (❌) |
| Nette | нет встроенного (❌) |
Только CloudCastle даёт профайлер внутри самого контейнера.
См. также: Object pool · Производительность.
CloudCastle DI · · PHP 8.1+ · PSR-11
GitHub · Packagist · Releases · Discussions · Сравнение
Исходники Wiki — каталог wiki/ в репозитории (синхронизация через GitHub Actions)
- 🏗️ Архитектура
- ⚡ Быстрый старт
- 📊 Сравнение — 5 аналогов, таблица + победители
- 🧩 Возможности (детально) — каждая фича: принцип, +/−, аналоги
- 🧪 Bootstrap
- 🚀 Compiled container
- 🔗 Contextual binding
- 🤖 Autowiring
- 📄 Конфигурация
- 📖 Справочник конфигурации
- 📂 Сканирование классов
- 🌍 Глобальный реестр
- 🏷️ Теги и декораторы
- 🔗 call(), bind(), hooks
- 🔄 Прототипы, alias, lazy, lazyGhost
- 📋 Справочник API
- 🏭 Фабрики и singleton