Mesures – Test 1.2

#include <vector>
#include <iostream>
#include <list>
#include <deque>
#include <random>
#include <chrono>
#include <memory>
#include <algorithm>
using namespace std;
using namespace std::chrono;
template <class Itt>
   system_clock::duration somme_elements(Itt debut, Itt fin, long &somme)
   {
      somme = {};
      auto avant = system_clock::now();
      for (; debut != fin; ++debut)
         somme += *debut;
      return system_clock::now() - avant;
   }
int main()
{
   const int N = 10000000;
   unique_ptr<int[]> tab (new int[N]);
   random_device rd;
   mt19937 rng(rd());
   uniform_int_distribution<int> distrib(1,10);
   generate(&tab[0], &tab[N], [&](){ return distrib(rng); });
   vector<int> v(&tab[0], &tab[N]);
   list<int> lst(&tab[0], &tab[N]);
   deque<int> d (&tab[0], &tab[N]);
   long somme {};
   auto t_t = somme_elements(&tab[0], &tab[N], somme);
   auto t_v = somme_elements(begin(v), end(v), somme);
   auto t_lst = somme_elements(begin(lst), end(lst), somme);
   auto t_d = somme_elements(begin(d), end(d), somme);
   cout << "Resultats pour la somme de " << N << " elements (ms):" << endl
        << "\ttableau: " << duration_cast<milliseconds>(t_t).count() << " ms." << endl
        << "\tvector: " << duration_cast<milliseconds>(t_v).count() << " ms." << endl
        << "\tlist: " << duration_cast<milliseconds>(t_lst).count() << " ms." << endl
        << "\tdeque: " << duration_cast<milliseconds>(t_d).count() << " ms." << endl;
}

Sur mon petit ordinateur portatif, compilé avec Visual Studio 2013, configuration Release, et en prenant bien entendu soin d'ajouter _SECURE_SCL=0 aux options du préprocesseur pour désactiver les (franchement inutiles et nuisibles) Checked Iterators, j'obtiens :

Resultats pour la somme de 10000000 elements (ms):
        tableau: 21 ms.
        vector: 23 ms.
        list: 23 ms.
        deque: 22 ms.
Appuyez sur une touche pour continuer...

Valid XHTML 1.0 Transitional

CSS Valide !