Затраты на поиск объекта по сравнению с хранением в локальном - PullRequest
0 голосов
/ 15 июля 2010

Предположим, у вас есть закрытый статический метод с именем 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();

В приложении, гдепроизводительность довольно важна, нет ли накладных расходов в первом наборе функций нетривиально?Могут ли современные компиляторы оптимизировать эти вещи?

Я понимаю, что профилирование ответит на мой вопрос в моем случае, но я ищу здесь практическое правило.Насколько выгодно хранить существующие данные в локальной переменной, а не восстанавливать их, или это повторное извлечение обычно оптимизируется современными компиляторами?

1 Ответ

0 голосов
/ 15 июля 2010

Вы беспокоитесь о неправильных вещах и сами ответили на вопрос.Профилируйте его и оптимизируйте, если оно является узким местом.

В любом случае: Inst (), вероятно, будет встроенным, так что нет никаких накладных расходов на вызов функции, так как он статический, и результат не зависит от каких-либо очевидных внешних параметровкомпиляторы могут полностью его оптимизировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...