Я использую Very Sleepy CS для профилирования, если это имеет значение.Профилирование; ippvmGetLibVersion: я не называл это
IPP (от Intel Integrated Performance Primitives) используются в моем проекте, в основном за один вызов:
ippsExp_64fc_A26(reinterpret_cast<Ipp64fc*>(delta_vector.data()), reinterpret_cast<Ipp64fc*>(delta_vector_out.data()), delta_vector.size());
После профилирования я заметил вызов странной функции, сделанный из функции, которая вызывает ранее упомянутые один. ippvmGetLibVersion - это его имя, и оно занимает почти 1/3 времени исполнения. Об этом не упоминается в моих источниках. ippInit вызывается в начале основной программы.
Что происходит и как я могу избавиться от него? Тратить время выполнения для постоянных вызовов с одинаковой отдачей кажется глупым.
Причиной такого поведения Very Sleepy CS может быть и следующее. Все профилиляторы используют выборку процессора, то есть прерывают приложение через некоторый интервал и пытаются определить, где приложение работало до прерывания. Этот анализ выполняется по информации из стека и глобальных символов. IppsExp_64fc_A26 и другие функции из веб-сайта векторной математики IPP не имеют глобальных имен в адресном пространстве приложения. Таким образом, VS CS не имеет ничего общего с анализом размещения. Он может указывать на ближайший известный глобальный символ (ippvmGetLibVersion в вашем случае). Отсутствие информации о разворачивании стека)). –