Предположим, у вас есть закрытый статический метод с именем Inst()
, который позволяет классу извлекать отдельный экземпляр из приложения в своих статических методах.Может быть, Inst () определен примерно так ...
return App::GetApp()->CurrentState()->MyClass(); // Inst returns a reference
Сравните это ...
// I prefer this
Inst().DoThis();
Inst().DoThat();
Inst().DoFoo();
с ...
MyClass inst = Inst();
inst.DoThis();
inst.DoThat();
inst.DoFoo();
В приложении, гдепроизводительность довольно важна, нет ли накладных расходов в первом наборе функций нетривиально?Могут ли современные компиляторы оптимизировать эти вещи?
Я понимаю, что профилирование ответит на мой вопрос в моем случае, но я ищу здесь практическое правило.Насколько выгодно хранить существующие данные в локальной переменной, а не восстанавливать их, или это повторное извлечение обычно оптимизируется современными компиляторами?