#include <iostream>
int main(){
for(int i = 0; i < 100000000; i++){
std::string from = "hello";
}
return 0;
}
Этот код производит некоторые вызовы strerror_l внутри конструктора std :: string.Это пример кода, внутри реального проекта он вызывается гораздо чаще (профилируется с помощью Google pprof).Что это такое и как я могу избежать этих вызовов?
Тестовая среда:
debian 6.0.1, g++ 4.4.5 and g++ 4.9.2
- нет вызовов strerror_l
debian 8.6, g++ 4.9.2
- несколько вызовов
Способы воспроизведения (требуется gpr pprof):
Сборка с профилировщиком: g++ question.cpp -lprofiler
Получение данных профиля: CPUPROFILE=/tmp/question.out /tmp/a.out
Построение графика вызовов: google-pprof --pdf /tmp/a.out question.out > output.pdf