webasyst/webasyst-framework — pull request #74 by SergeR (2014-12-08 22:01:36+00:00)
Title: DO NOT MERGE. Discuss first! :)

Простите, но нет нестабильной девелоперской ветки, только `master` поэтому реквест сюда отправляю.

Увидел на форуме вопросы про нагрузку, решил под профайлером позапускать фреймворк с приложениями. Нашел метод, потребляющий ресурсов — `waAppConfig::getPHPFiles()`.

Переписал его с использованием SPL итераторов. Погонял под профайлером, переключая ветки в git и очищая кэш. Конкретные цифры разнятся, но разница в 20%-25% остается.

Вот тут в двух соседних окнах открыл один из результатов запуска. Слева теперешний `waAppConfig::getPHPFiles()`, справа — переписан с использованием SPL (надо учитывать две строки с `getPHPFiles` и с `RecursivePhpFilterIterator` чтоб все по-честному было.

О минусах ниже

![_162](https://cloud.githubusercontent.com/assets/40233/5348028/a501cdc0-7f3d-11e4-9165-f7468ad94270.png)

Минус в потере обратной совместимости. Теперешний метод вызывает метод `isIgnoreFile($file)` чтобы определить надо ли игнорировать файл/директорию. И наследники этот метод могут переопределить — из доступных мне приложений это делает **mailer**, добавляя к списку игнорируемых имя 'swift'.

В новой редакции я предусмотрел возможность передачи массива дополнительных имен для игнорирования (все начинающиеся на точки и так будут пропущены) без использования `isIgnoreFile()`, но **mailer** -то поправить не могу.

Может кто-то тоже погонять/потестировать и посравнивать? Может удастся разработчиков убедить, что еще не поздно, тем более, что метод недокументирован. :) Выпускают-же обновления, требующие непременно новой версии фреймворка :)