Я пишу код C ++, который работает на Ubuntu. Я также использую pthreads. Я делаю свое исследование в области производительности алгоритма.
У меня есть этот алгоритм, который я улучшил, он мог работать в течение 6 ~ 10 часов. Но измерения времени, которые я беру, также включают очень мелкие вещи, как в мс.
Кроме того, на компьютере, на котором я его запускаю, также выполняются другие процессы, поэтому как мне убедиться, что измеренное время не включает обработку времени для других процессов.
Не существует единого «наиболее точного пути». Как и в случае любого измерения, вам сначала нужно определить, что вы хотите измерить. Если вы просто хотите измерить время выполнения, целесообразно повторять одно и то же задание и останавливать время.
Если вы хотите измерить время, в течение которого центральный процессор (ы) действительно занят работой, top
может быть интересной для вас программой.
Если вам нужно узнать, сколько времени тратится на какую подпрограмму, пакет linux-utils содержит perf
, который может измерять индивидуальное время звонка.
Часто задержки без CPU доминируют во время выполнения. Например, не имеет смысла просто измерять время, затрачиваемое процессором, когда вы ожидаете сетевой ввод или данные с жесткого диска.
Итак: ваш вопрос на самом деле является вопросом для себя: что вы хотите измерить? «Алгоритм производительности» предполагает, что вы занимаетесь информатикой, и в этом случае вы должны иметь доступ к обширной литературе, которая объясняет, что может представлять интерес. Нет единого «решения» вопроса «что является наиболее точным измерением», если только вы не определите «измерение» более близко; это ваша работа, и обычно это сложная часть измерения вещей.