Advertisement
bogolyubskiyalexey

speed test for insert to vector begin

Nov 11th, 2017
166
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.57 KB | None | 0 0
  1. #include <iostream>
  2. #include <vector>
  3. #include <functional>
  4. #include <cstring>
  5.  
  6.  
  7. using namespace std;
  8.  
  9.  
  10. double one_test0(int count, int values[]) {
  11.     vector<int> m;
  12.    
  13.     for (int i = 0; i < count - 1; ++i) {
  14.         m.push_back(i);
  15.     }
  16.     double start = clock();
  17.    
  18.     m.insert(m.begin(), values[count - 1]);
  19.    
  20.     double end = clock();
  21.     return (end - start) / CLOCKS_PER_SEC;
  22. }
  23.  
  24. double one_test1(int count, int values[]) {
  25.     vector<int> m;
  26.    
  27.     for (int i = 0; i < count - 1; ++i) {
  28.         m.push_back(i);
  29.     }
  30.     m.shrink_to_fit();
  31.     double start = clock();
  32.    
  33.     m.insert(m.begin(), values[count - 1]);
  34.    
  35.     double end = clock();
  36.     return (end - start) / CLOCKS_PER_SEC;
  37. }
  38.  
  39. double run(function<double(int, int[])> func, int count, int values[]) {
  40.     double time = 0;
  41.     int tries = 10;
  42.     for (int i = 0; i < tries; ++i) {
  43.         time += func(count, values);
  44.     }
  45.     return time / tries;
  46. }
  47.  
  48. int main() {
  49.     vector<int> counts = {
  50.        5000000,
  51.       10000000,
  52.      100000000
  53.     };
  54.     int max_count = counts.back();
  55.     int* v = new int[max_count];
  56.     for (int i = 0; i < max_count; ++i) {
  57.         v[i] = rand();
  58.     }
  59.    
  60.     vector<function<double(int, int[])>> one_tests = {
  61.         one_test0,
  62.         one_test1
  63.     };
  64.    
  65.    
  66.    
  67.     for (auto count : counts) {
  68.         printf("count=%d\n", count);
  69.         for (int i = 0; i < one_tests.size(); ++i) {
  70.             printf("\ttest #%d\t: \t%.10lfsec\n", i, run(one_tests[i], count, v));
  71.         }
  72.     }
  73.  
  74.     return 0;
  75. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement