Bug #14092
closedMultidomain translations slow hammer down
Description
When hammer is installed with multiple plugins the startup slows down. Profiling showed we're loosing quite some time in fast-gettext's initialisation and translation methods. It loads all available .mo files for all languages in all plugins regardless what language is used. Another inefficiency lies in multidomain translations we're using (one domain per plugin). For each translation fast-gettext iterates over all domains until it finds the key.
Simple measurement for hammer with plugins:
- hammer_cli_foreman
- hammer_cli_foreman_bootdisk
- hammer_cli_foreman_discovery
- hammer_cli_foreman_docker
- hammer_cli_gutterball
- hammer_cli_import
- hammer_cli_katello
Standard hammer configuration on ruby 1.9.3:
time hammer --help > /dev/null real 0m1.584s user 0m1.453s sys 0m0.130s
With only one translation domain:
time hammer --help > /dev/null real 0m1.109s user 0m1.017s sys 0m0.092s
The solution seems to be to create custom fast-gettext translation repository that would merge the keys at load time to get rid of the search loops in each translation. Loading the .mo files lazily might also improve the performance.
Updated by The Foreman Bot over 8 years ago
- Status changed from Assigned to Ready For Testing
- Pull request https://github.com/theforeman/hammer-cli/pull/198 added
Updated by Marek Hulán over 8 years ago
- Target version changed from 115 to 1.6.3
Updated by Tomáš Strachota over 8 years ago
- Target version changed from 1.6.3 to 1.6.0
Updated by Anonymous over 8 years ago
- Status changed from Ready For Testing to Closed
- % Done changed from 0 to 100
Applied in changeset 6e28b70ff1a05344b0af7abd5a2f660d74ba6df7.