Как мне было давно известно, я всегда создаю исполняемые файлы для выпуска без указателей на рамки (это по умолчанию, если вы компилируете с помощью /Ox ).
Однако теперь я прочитал в статье http://research.microsoft.com/apps/pubs/default.aspx?id=81176, что указатели на ракурсы не оказывают большого влияния на производительность. Таким образом, оптимизация полностью (с использованием /Ox ) или его полное оптимизация с помощью указателей на рамки (с использованием /Ox/Oy -) на самом деле не влияет на результат.
Microsoft, похоже, указывает, что добавление указателей кадров (/Oy-) облегчает отладку, но действительно ли это так?
Я сделал несколько экспериментов и заметил, что:
- в простом тестовом исполняемом файле (скомпилированном с использованием /Ox/Ob 0) упущение указателей рамки увеличивает производительность (около 10%). Но этот тестовый исполняемый файл выполняет только некоторые вызовы функций, ничего другого.
- в моем собственном приложении добавление/удаление указателей на рамки, похоже, не имеет большого эффекта. Добавление указателей кадров, по-видимому, делает приложение примерно на 5% быстрее, но это может быть в пределах поля ошибки.
Каков общий совет относительно указателей на рамки?
- должны ли они быть опущены (/Ox) в исполняемом файле, потому что они действительно оказывают положительное влияние на производительность?
- если они будут добавлены (/Ox/Oy-) в исполняемый файл release, потому что они улучшают отладочную аблацию (при отладке с файлом аварийного дампа)?
Использование Visual Studio 2010.