хронометраж — C ++: запуск алгоритма в течение определенного времени (без хронометража)

Я думал о чем-то вроде:

// Runs algorithm() n times during an amount of seconds.
void run(int seconds) {
clock_t start = clock();
clock_t current = start;
while(double (current - start) / CLOCKS_PER_SEC <= seconds) {
algorithm();
current = clock();
}
}

Я выбрал clock() над time() чтобы избежать учета времени, когда процесс спит.
Я хотел бы знать, есть ли лучший способ достичь этого, не используя хроно.

0

Решение

STLSoft имеет performance_counter который работает на платформах UNIX и Windows. Библиотека является только заголовком и требует только простого включения:

#include <platformstl/performance/performance_counter.hpp>

void run(int seconds) {
platformstl::performance_counter pc;
platformstl::performance_counter::interval_type current = 0;
pc.start();
while ((current / 1000) <= seconds){
algorithm();
current += pc.stop_get_milliseconds_and_restart();
}
}

Вы также можете посмотреть на источник подсказки по созданию собственного.

2

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

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

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