C ++ метод синхронизации с меньшим временем sys

Я пытаюсь сделать свою программу самосинхронной и знаю два метода

1) с помощью getrusage

truct rusage startu; struct rusage endu;
getrusage(RUSAGE_SELF, &startu);

//Do computation here

getrusage(RUSAGE_SELF, &endu);
double start_sec = start.ru_utime.tv_sec + startu.ru_utime.tv_usec/1000000.0;
double end_sec = endu.ru_utime.tv_sec + endu.ru_utime.tv_usec/1000000.0;
double duration = end_sec - start_sec;

Это выбирает пользовательское время программного сегмента.

2) с помощью clock (), который получает время выполнения процессора

double start_sec = (double)clock()/CLOCKS_PER_SEC;

//Do computation here

double end_sec = (double)clock()/CLOCKS_PER_SEC;
double duration = end_sec - start_sec;

Это выбирает в реальном времени программный сегмент.

Тем не менее, я получаю действительно много времени для обоих методов. Время пользователя также больше, чем без этих времен. Системное время иногда даже удваивает пользовательское время.

Например, я выполняю задачу Traveling Salesman, для ввода, который обычно выполняется около 3 секунд как для пользователя, так и для реального времени, эти два тайминга заставляют пользовательское время превышать 5 секунд, а реальное время — более 15 секунд, что означает sys. время около 10 секунд.

Я надеюсь узнать, есть ли способы улучшения или другие библиотеки, которые способны сократить время системы и время пользователя, если это возможно. Если мне нужно использовать другие библиотеки, мне нужны библиотеки как для времени пользователя, так и для времени реального времени.

Спасибо за любой совет!

0

Решение

Предлагаю внимательно прочитать Время (7) справочную страницу и рассмотреть также clock_gettime (2) Системный вызов.

0

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

Других решений пока нет …

По вопросам рекламы [email protected]