Mesures – Test 0.0

Cet exemple utilise une version simplifiée de la fonction de mesure de temps présentée dans ../Sujets/AuSecours/Mesurer-le-temps.html et compile avec C++ 17 (ce n'est pas essentiel, mais ça simplifie l'écriture).

#include <iostream>
#include <vector>
#include <list>
#include <deque>
#include <string_view>
#include <chrono>
using namespace std;
using namespace std::chrono;
template <class F, class ... Args>
   auto test(F f, Args &&... args) {
      auto pre = high_resolution_clock::now();
      auto res = f(std::forward<Args>(args)...);
      auto post = high_resolution_clock::now();
      return pair{ res, post - pre };
   }
template <class C>
   void test_insertion(string_view nom, int n) {
      auto [r,dt] = test([conteneur = C{}, n]() mutable {
         for (int i = 0; i < n; i++)
            conteneur.push_back(i+1);
         return conteneur.back(); // pour éviter que l'optimiseur n'élimine tout
      });
      cout << '\t' << nom << " : "
           << duration_cast<milliseconds>(dt).count() << " ms." << endl;
   }
int main() {
   enum { N = 5'000'000 };
   cout << "Resultats pour " << N << " insertions (ms):" << endl;
   test_insertion<vector<int>>("vector", N);
   test_insertion<deque<int>>("deque", N);
   test_insertion<list<int>>("list", N);
}

Quelques résultats suivent. Portez attention aux temps relatifs pour un même compilateur, mais ne comparez pas les compilateurs entre eux, car les exécutions sont faites sur des machines distinctes :

Wandbox (lien) Coliru (lien) Visual Studio 2019 (Release, 32 bits)
Resultats pour 5000000 insertions (ms):
	vector : 80 ms.
	deque : 22 ms.
	list : 288 ms.
Resultats pour 5000000 insertions (ms):
	vector : 90 ms.
	deque : 25 ms.
	list : 269 ms.
Resultats pour 5000000 insertions (ms):
        vector : 66 ms.
        deque : 97 ms.
        list : 287 ms.

Valid XHTML 1.0 Transitional

CSS Valide !