измерять загрузку ЦП в секунду динамически связанной библиотеки

У меня есть пример приложения, которое использует динамически связанную библиотеку library.so, Я измерял загрузку процессора в примере приложения с помощью команды top. Но он показывает загрузку процессора как примера приложения, так и library.so в секунду. Но я хочу видеть использование процессора только library.so, Есть какой-либо способ сделать это? Я слышал, что это достижимо с помощью htop, но не мог понять, как это сделать. Я использовал древовидное представление, но оно показывает несколько процессов в качестве примера процесса приложения. Я не мог понять, какой из них library.so, Я использую Centos 5.11. Ядро версии 3.2.63-1.el5.elrepo.

0

Решение

Учитывая, что библиотека считается частью вашей программы, одним из способов будет измерение в вашем коде. Следующий минимальный пример реализован на C ++ 11 и выполняет только одну функцию из гипотетической библиотеки:

#include <chrono>
#include <iostream>
#include <hypothetical>
int main() {
using namespace std::chrono;
system_clock systemClock;
system_clock::time_point startingTime{systemClock.now()};
hypothetical::function();
system_clock::duration libraryTime{systemClock.now() - startingTime};
std::cout << "Hypothetical library took " << duration_cast<seconds>(libraryTime).count() << " seconds to run.\n";
return 0;
}

Вам нужно будет распространить это на все функции, которые ваша программа вызывает из вашей библиотеки.

0

Другие решения