Mesures – Test 0.0b

#include <ctime>
#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <string>
#include <chrono>
using namespace std;
using namespace std::chrono;
template <class C>
   system_clock::duration inserer_elements(C &conteneur, int n)
   {
      auto avant = system_clock::now();
      for (int i = 0; i < n; i++) conteneur.insert(begin(conteneur), i+1);
      return system_clock::now() - avant;
   }
template <class C>
   void test_insertion(const string &nom, int n)
   {
      C conteneur;
      auto temps = inserer_elements(conteneur, n);
      cout << '\t' << nom << " : "
           << duration_cast<milliseconds>(temps).count() << " ms." << endl;
   }
int main()
{
   const int NINSERT = 50000;
   cout << "Resultats pour " << NINSERT << " insertions (ms):" << endl;
   test_insertion<vector<int>>("vector", NINSERT);
   test_insertion<deque<int>>("deque", NINSERT);
   test_insertion<list<int>>("list", NINSERT);
}

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 :

Résultats pour 50000 insertions (ms):
        vector: 1908 ms.
        list: 3 ms.
        deque: 3 ms.
Appuyez sur une touche pour continuer...

À la lueur de ces résultats, vous comprendrez sans doute la raison pour laquelle push_front() n'est pas une opération offerte par std::vector : ce serait terriblement inefficace.


Valid XHTML 1.0 Transitional

CSS Valide !