У меня есть пара вариантов программы, которые я хочу сравнить по производительности. Оба выполняют по существу одну и ту же задачу.
Один делает все это на С и в памяти. Другой вызывает внешнюю утилиту и выполняет IO.
Как мне их достоверно сравнить?
1) Получение «времени на процессоре» с использованием «времени» благоприятствует второму варианту вызова системы () и выполнения ввода-вывода. Даже если я добавлю «системное» время к «пользовательскому», оно все равно не будет учитываться для времени, затраченного на wait ().
2) Я не могу просто синхронизировать их, так как они работают на сервере и могут быть сброшены с процессора в любое время. Усреднение по 1000 экспериментам - это мягкий вариант, так как я понятия не имею, как используется мой сервер - это виртуальная машина в кластере, это довольно сложно.
3) профилировщики не помогают, потому что они дадут мне время, потраченное на код, что опять-таки благоприятствует версии, которая делает system ()
Мне нужно сложить все процессорное время, которое потребляют эти программы, включая пользователя, ядро, ввод-вывод и детский рекурсивно.
Я ожидал, что это будет распространенной проблемой, но все еще не нашел решения.
(Решено с помощью времен () - см. Ниже. Спасибо всем)