Различия в производительности C++, использование формы Windows и консоли Windows

Есть ли какие-либо различия (производительность) при использовании формы Windows или консоли Windows при программировании в Windows Visual C++.

Я слышал, например, что printf() в консоли делает программу очень медленной. Как это, если я хочу обновить метку в форме? Делает что программа тоже медленная?

Почему я спрашиваю Я программировал консольные приложения, но теперь я хочу создать хороший графический интерфейс для своего приложения.

Если у меня есть готовые классы (например, directshow, opencv и мои пользовательские классы, которые все соединяют), трудно ли перейти на приложение Windows Form?

Спасибо!

3 ответа

Как правило, нет никакой разницы в производительности, поскольку консоль Windows также использует WinApi, она больше не похожа на DOS, где она была в основном независимой (Win 9x). Но обновление интерфейса визуальных компонентов тоже занимает некоторое время. Например, если у вас есть приложение, которое пишет 10000 строк текста, оно будет работать намного быстрее в консоли, чем в memo. Но во многих случаях этого можно избежать, или, по крайней мере, Вы сможете сделать его скорость сопоставимой. Самый простой подход в данном примере - это скрыть заметку на время добавления элементов и отобразить результат в конце. Это ускорит процесс, потому что каждый раз, когда добавляется элемент, интерфейс обновляется, а при скрытии - нет.

Таким образом, ваше приложение, в целом, вероятно, будет работать немного медленнее при использовании GUI, но правильное его кодирование может сделать разницу (почти) невидимой.

Вывод любого типа - печать чего-либо на консоль через printf или обновление метки - имеет некоторые затраты времени выполнения. То, что вы слышали, было, вероятно, printf это дороже, чем вы думаете, поэтому, если вы звоните очень часто, вы можете обнаружить, что это место, где проводится больше всего времени.

Конечно, то же самое относится и к функции, которая обновляет ярлык, или к одной из ракет межконтинентальных баллистических ракет. Если вы делаете это слишком часто, воздействие становится очень заметным.

Цена printfВ консольном режиме во многом это связано с тем, что если вы выводите большое количество текста на экран, то идет прокрутка. Если вы, например, сравните это с выводом всего этого в файл, это будет в 10-100 раз быстрее. Но если вы тогда делаете type myfile.txt чтобы отобразить файл, время, которое требуется, будет почти точно разницей между выводом на экран и выводом в файл.

Обновление метки ИЛИ печать небольшого объема текста без прокрутки должны быть примерно сопоставимы, и если вы действительно не делаете много сотен в секунду, вероятно, не заметны в вашем общем времени выполнения.

Другие вопросы по тегам