vendredi 20 février 2009

boost::timer m'a eu

#include <iostream>
#include <boost/timer.hpp>

int main()
{
boost::timer t;
usleep(1000000);
std::cout << t.elapsed() << std::endl;
return 0;
}
Que renvoie ce programme? Sous Windows, probablement 1.0. Sous Linux, probablement 0.

C'est parce que boost::timer utilise clock(), qui sous Linux renvoie le temps CPU écoulé. Quand on dort, rien ne se passe, donc zéro.

Il va donc me falloir écrire ma propre classe de timer à partir de boost::posix_time. Bof.

Aucun commentaire: