На днях столкнулся прямо таки с мистическим случаем в поведении функции preg_match(). Есть простейший код:
for ($i=0;$i<800;$i++){
preg_match("(.*)def$/", "abc", $matches);
}
Будучи запущен из-под админки Битрикса данный кусок код выполняется в 30% случаев за 4-5 секунд. На тестовом VPS, где вообще никого нет, ни пользователей, ни параллельных обработок, рассылок загрузок. В остальных случаях - 0.02-0.04 с. Т.е. ни с того ни с сего производительность на обработке 800 раз одной строки падает в 100 раз. Будучи запущен из-под пользовательской части Битрикса стабильно выдаёт 0.04 секунды. Изучение трейса показало, что каждый раз вызывается исключение:
Группы на сайте создаются не только сотрудниками «1С-Битрикс», но и партнерами компании. Поэтому мнения участников групп могут не совпадать с позицией компании «1С-Битрикс».