Почему _mainCRTStartup так медленно работает с отладкой, но быстро с отладкой? - PullRequest
0 голосов
/ 25 марта 2011

Я использую 32-битную GLUT на 64-битной Windows 7 с Visual Studio 2010. Проект просто содержит мою реализацию C ++ и заголовочные файлы. Нет специфичного для Win32 кода.

Я делаю много операций рисования пикселей. Это происходит мгновенно с конфигурацией релиза, но очень медленно (по крайней мере, 5 секунд, пока он рисует) с конфигурацией отладки. Я заметил, что это замедлилось больше, когда я рисовал больше. Итак, я понял, профиль это.

Профилировщик Visual C ++ говорит, что 100% (я предполагаю, что это округлено) времени потрачено на _mainCRTStartup. Я понимаю, что это время выполнения C, но что заставляет его работать так медленно в конфигурации отладки? Эквивалентный код C одинаково мгновенен как в конфигурации отладки, так и в выпуске. Есть ли что-то особенное в C ++, которое заставляет _mainCRTStartup намного дольше?

РЕДАКТИРОВАТЬ: Очевидно, я упустил одну вещь: в кадре _mainCRTStartup есть ссылка на Unknown frame(s). Я предполагаю, что это main() и его дочерние функции. Я не могу заставить его профилировать функции, которые я написал, ни в отладке, ни в выпуске. Куда мне пойти после этого?

Ответы [ 3 ]

1 голос
/ 25 марта 2011

Возможно, отладчику не удается найти файлы .pdb для используемых вами библиотек DLL. Первое, что нужно сделать, это проверить настройки сервера символов. Инструменты + Опции, Отладка, Символы. Снимите флажок с местоположения файла Symbol и повторите попытку.

0 голосов
/ 25 марта 2011

_mainCRTStartup является основной функцией, которая вызывает main. Так что да, для каждой программы 100% времени тратится внутри этой функции, потому что она вызывает все другие функции.

Вы профилируете режим отладки? Просто почему?

0 голосов
/ 25 марта 2011

Что такое "эксклюзивные% сэмплы" в _mainCRTStartup? Инклюзивные образцы бесполезны для этой рутины.

...