connaitre le temps moyen d'une fonction
bonjour,
voila j'utilise dans mon code la fonction std::find() et j'aimerai connaitre le temps moyen qu'elle met pour réaliser sa fonction. J'ai donc fait le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| int main(int argc, char const *argv[])
{
std::vector<int> tab;
std::vector<double> tabtime;
for(int i = 0; i < 100; i++)
{
tab.push_back(i);
}
for (int n = 0; n < 100; n++)
{
auto start = std::chrono::system_clock::now();
if( std::find(tab.begin(), tab.end(), n) != tab.end() )
{
//cout << "element find" << endl;
}
else
{
//cout << "element do not find" << endl;
}
auto end = std::chrono::system_clock::now();
std::chrono::duration<double> elapsed_seconds = end-start;
tabtime.push_back(elapsed_seconds.count());
}
double somme = 0;
for (int i = 0; i < tabtime.size(); ++i)
{
somme+= tabtime[i];
}
cout << "time std::find = " << somme/(double)tabtime.size() << endl;
return 0;
} |
Le probleme est lorsque je lance le code j'ai des temps qui varie beaucoup :
1er essai : 8.6e-07
second essai :1.74e-06
troisieme essai :5.2e-07
...
et je ne comprend pas pourquoi. Normalement sur 100 lancements de la fonction de devrais avoir une bonne estimation. Avez vous une idée de comment résoudre le probleme ?
Merci d'avance