ОГРОМНАЯ разница в частоте кадров между сборками выпуска / отладки - PullRequest
3 голосов
/ 21 июня 2010

Я работаю над игрой DirectX и обнаружил, что во время релизных сборок я получаю в среднем 170 кадров в секунду, однако в отладочных сборках я получаю ~ 20 кадров в секунду.

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

Ответы [ 5 ]

3 голосов
/ 21 июня 2010

Отладочные сборки обычно отключают все оптимизации. Многие библиотеки (включая DirectX) также выполняют дополнительную проверку и детальную диагностику в режиме отладки.

Так что да, вполне возможно иметь такую ​​большую разницу в производительности.

3 голосов
/ 21 июня 2010

Естественно.Отладочные сборки содержат неоптимизированный код, содержат дополнительные метаданные, чтобы их можно было отследить в файлах pdb, а также в других гремлинах, поедающих ваш fps.Большая часть тестового кода также выполняется только в среде отладки, которую вы заметите, если ваш код находится в узком цикле (как, например, сцена рендеринга видеоигр).

3 голосов
/ 21 июня 2010

Как обычно, это зависит (тм).Нет, серьезно: разница в размерах между производительностью отладки и выпуском звучит достаточно разумно.(Лучше, чем наоборот;))

2 голосов
/ 22 июня 2010

Да, это совершенно нормально.Такие случаи обычно вызваны использованием типов классов, таких как Matrix и Vector, которые действуют как обычные типы данных (то есть support +, -, * и т. Д.) И ASSERT.

Причина, по которой типы классов вызывают такое замедление, заключается в том, что ни один из кодов не встроен в том месте, в котором он выпускается.Это может вызвать ОГРОМНУЮ разницу в скорости, и это удивительно.

ASSERT - это дополнительная работа для проверки безопасности вещей.Дополнительная работа означает дополнительное время обработки и, следовательно, все замедляется.

Как уже упоминалось, отсутствие оптимизации также не помогает.Хотя, в некоторой степени, это отражается на отсутствии встраивания (что является оптимизацией).

0 голосов
/ 21 июня 2010

Если вы хотите знать наверняка, всегда есть возможность сделать анализ эффективности первого заказа (используя ваш любимый профилировщик). Да, обычно не стоит тратить время на оптимизацию отладочной сборки, но если вы обнаружите, что производительность слишком далека от сборки выпуска, все равно стоит потратить некоторое время на нее.

...