Smarty performance issue when switching locales
We hit a serious performance issue on sending emails today. We have seen performance slow down on email sends before but it has resolved itself in a fairly OK timeframe except for today.
I believe what made today bad was not our newly upgraded Civi (5.74 beta) but rather the fact that we are dealing with a more varied mix of languages from today's run.
The slowness is happening in the getTemplateDir()
function in the smarty mix - specifically on the realPath()
calls. This patch is giving us immediate relief
However, I also found that the problem can be resolved by commenting out this line which forces a reload of the Config::Singleton()
object when the language is changed. From the comments this is done because
// Config must be re-initialized to reset the base URL
// otherwise links will have the wrong language prefix/domain.
- although our (D7) site does not use any language other than English at the uf level.
It seems like this is a heavy handed way to call
\CRM_Core_BAO_ConfigSetting::applyLocale(\Civi::settings($domain->id), $domain->locales);
which may not have the same performance hit. My expectation is that we will get speed improvement on not tearing down the config object, even disregarding the proximate Smarty template dir cause.
Relevant links