Измерение производительности процессорного времени для вызовов функций Intel SGX
Я пишу клиент-серверное приложение C++. Сервер содержит список пропусков, в котором хранится пара ключ-значение. Я могу вставить данные из клиента, и запрос достигнет сервера, и будут выполнены такие операции, как вставка, удаление, поиск.
И клиент, и сервер будут иметь анклав SGX в них. Я хочу измерить процессорное время на сервере. Для этого я могу просто рассчитать истекшее время ЦП, начиная с момента, когда я выполняю вызов анклавов SGX на сервере для работы с пропуском списков, и заканчивать время, когда вызов анклавов возвращается на сервер. Эта ссылка показывает, как рассчитать истекшее время ЦП. Измерение времени ЦП в C++.
Мне нужно сделать миллионы запросов, и для каждого из них я буду измерять время процессора и хотел бы взять среднее значение для каждой операции, то есть для вставки, удаления и поиска.
Ребята, подскажите, пожалуйста, какой из перечисленных способов эффективен?
- Вычислите истекшее время процессора, откройте файл results.txt и запишите в него одну строку за раз. А потом вручную взять среднее? ИЛИ ЖЕ
- Использовать инструмент профилирования? Я не использовал никаких инструментов профилирования, так что понятия не имею, как это работает.
Несколько других связанных вопросов:-
- Расчет времени процессора с использованием ctime не зависит от переключения контекста и других ресурсов на моем ПК? AFAIK, когда я сделаю вызов анклава, произойдет аппаратное переключение контекста. Поэтому попытка получить истекшее время путем помещения операторов ctime на уровень ненадежных серверов не помогает. Правильный?
- Есть ли хороший инструмент для сбора данных, хранящихся в файле results.txt, и создания из него хорошего графика?