Очень Сонный Профилировщик путает простые переменные как функции, среди других вопросов - PullRequest
0 голосов
/ 02 мая 2020

Я искал профилировщик C для Windows, который позволил бы мне проверять время, затрачиваемое на уровне строк исходного кода, а не только на уровне функций. Это делается для того, чтобы найти в программе горячие точки, которые можно оптимизировать.

Very Sleepy отлично подходит для этой цели. Однако в представлении «Исходный код» не похоже, что количество времени, затрачиваемое на строку кода, фактически составляет до 100% эксклюзивного времени для функции.

Например, Very Sleepy говорит, что мы потратили 18.50s Эксклюзивное время в функции. Но сложение всех временных интервалов, указанных в представлении «Источник» для этой функции, добавляет всего около 10 с.

Вот как я компилирую программу:

gcc -IC:/msys64_new/mingw64/include *.c -o plane.exe -g -gdwarf-2 -fno-omit-frame-pointer -O2 -Wall -Wno-unused -LC:/msys64_new/mingw64/lib -lShlwapi

Затем я открываю Very Sleepy через GUI и сэмплирование работающего процесса ровно 100 секунд.

Я использую Very Sleepy CS 0.90. Я использую Windows 7 и использую подсистему Mingw-w64 MSYS2.

РЕДАКТИРОВАТЬ:

Я также заметил две дополнительные странные вещи. Во-первых, Very Sleepy отображает некоторые функции без их имени, но распознает их как часть профилированного модуля.

Во-вторых, Very Sleep, похоже, считает, что некоторые переменные на самом деле являются функциями . Например:

enter image description here

extension_module_file_suffix это не функция , это переменная. Что происходит?

...