Release Build быстрее при запуске из Visual Studio, чем при обычном запуске - PullRequest
1 голос
/ 14 марта 2019

У меня есть приложение Qt, которое предназначено для визуализации деталей.Поэтому мы используем интерфейс Qt OpenGL QGLWidget.В этом приложении нам иногда приходится загружать и визуализировать много данных (до 4 ГБ двойных точек в 3D).Затем приложение работает медленно, но это не имеет значения, потому что производительность здесь не является реальной проблемой.Рендеринг одного кадра обычно занимает около 100 мс.

Проблема, к которой мы приближаемся, заключается в следующем: после того момента, как программа создала тяжелые данные и мы их загрузили, нам обычно требуется много оперативной памяти.Выделение памяти намного быстрее, когда приложение запускается из Visual Studio, чем при запуске «нормально».

В диспетчере задач я вижу, что скорость увеличения необходимой памятиочень разные.В то время как одно приложение может выделять около 1 ГБ памяти в секунду, другое может выделять только около 50 МБ в секунду.

Мой вопрос: в чем разница, когда приложение запускается из Visual Studio?Оба раза мы используем версию выпуска defaullt из VS.Что может вызвать такие проблемы и как я могу определить источник этих проблем?

Дополнительная информация: Это приложение основано на Qt5.Существует 10-летняя версия этого приложения, запрограммированная на Qt3 и Qt4.У нас больше нет источников этого приложения.Когда используется Qt3 / 4, мы не подходим к этим проблемам.Кажется, что поведение старого приложения такое же, как и при запуске приложения Qt5 с VS.
Мы используем Visual Studio 2015 и Qt5.9.1

Я проследил как раз использование процессора и памятииспользование:

В Visual Studio:
enter image description here

Без Visual Studio:
enter image description here

Вы видите, что увеличение объема памяти первого намного быстрее, чем второго.

1 Ответ

1 голос
/ 19 марта 2019

Оказывается, что вы видите различия в том, что при подключении отладчика ОС / отладчик блокирует некоторые страницы, чтобы они сразу были доступны для отладчика.Это исключительное условие, потому что вы подключили отладчик и не рекомендуется использовать в общем.Я полагаю, что быстрого решения не существует - возможно, только для использования opengl по-разному.

См. Также этот ответ, который, вероятно, имел ту же причину:

Приложение C ++ / opengl, работающее более гладко сотладчик прилагается

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