Mesures – Test 1.1

#include <vector>
#include <iostream>
#include <list>
#include <deque>
#include <random>
#include <chrono>
#include <memory>
using namespace std;
using namespace std::chrono;
namespace { long g_Somme = {}; }
template <class Itt>
   system_clock::duration somme_elements(Itt debut, Itt fin)
   {
      g_Somme = {};
      auto avant = system_clock::now();
      for (; debut != fin; ++debut)
         g_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);
   for (int i = 0; i < N; ++i)
      tab[i] = distrib(rng);
   vector<int> v(&tab[0], &tab[N]);
   list<int> lst(&tab[0], &tab[N]);
   deque<int> d (&tab[0], &tab[N]);
   auto t_t = somme_elements(&tab[0], &tab[N]);
   auto t_v = somme_elements(begin(v), end(v));
   auto t_lst = somme_elements(begin(lst), end(lst));
   auto t_d = somme_elements(begin(d), end(d));
   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: 5 ms.
        vector: 6 ms.
        list: 20 ms.
        deque: 14 ms.
Appuyez sur une touche pour continuer...

Valid XHTML 1.0 Transitional

CSS Valide !