Я думал о чем-то вроде:
// 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()
чтобы избежать учета времени, когда процесс спит.
Я хотел бы знать, есть ли лучший способ достичь этого, не используя хроно.
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();
}
}
Вы также можете посмотреть на источник подсказки по созданию собственного.
Других решений пока нет …