fork(1) download
  1. #include <vector>
  2. #include <stdlib.h>
  3. #include <memory.h>
  4. #include <iostream>
  5.  
  6. int main()
  7. {
  8.  
  9. size_t num = 9999999;
  10.  
  11.  
  12. //-----------------Наполнение вектора произвольными значениями--------
  13.  
  14. std::vector<size_t>my_vector_rand;
  15. my_vector_rand.resize(num);
  16.  
  17. for (size_t i = 0; i < num; i++)
  18. {
  19. my_vector_rand[i] = rand() % 100;
  20. }
  21.  
  22. size_t * my_vector_int = my_vector_rand.data();
  23.  
  24. //-----------------------------------------------------------------------------------
  25.  
  26.  
  27. int clock1;
  28. int clock2;
  29.  
  30. //-----------------------------------------------------------------
  31. size_t* my_sizet_pionter1 = (size_t*)malloc(num * sizeof(size_t));
  32.  
  33. clock1 = clock();
  34. for (size_t i = 0; i < num; i++)
  35. {
  36. memcpy(&my_sizet_pionter1[i], &my_vector_int[i], sizeof(size_t));
  37. }
  38. clock2 = clock();
  39. std::cout << "time_memcpy_without_all: " << clock2 - clock1 << std::endl;
  40. std::cout << my_sizet_pionter1[num - 1] << std::endl;
  41. //-----------------------------------------------------------------
  42.  
  43.  
  44.  
  45.  
  46.  
  47.  
  48. //-----------------------------------------------------------------
  49. size_t* my_sizet_pionter2 = (size_t*)malloc(num * sizeof(size_t));
  50.  
  51. memset(my_sizet_pionter2, 0, num * sizeof(size_t));
  52. std::cout << my_sizet_pionter2[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий memset.
  53.  
  54.  
  55. clock1 = clock();
  56. for (size_t i = 0; i < num; i++)
  57. {
  58. memcpy(&my_sizet_pionter2[i], &my_vector_int[i], sizeof(size_t));
  59. }
  60. clock2 = clock();
  61. std::cout << "time_memcpy_memset_zero: " << clock2 - clock1 << std::endl;
  62. std::cout << my_sizet_pionter2[num - 1] << std::endl;
  63. //-----------------------------------------------------------------
  64.  
  65.  
  66.  
  67.  
  68. //-----------------------------------------------------------------
  69. size_t* my_sizet_pionter3 = (size_t*)malloc(num * sizeof(size_t));
  70.  
  71. memset(my_sizet_pionter3, 1, num * sizeof(size_t));
  72. std::cout << my_sizet_pionter3[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий memset.
  73.  
  74. clock1 = clock();
  75. for (size_t i = 0; i < num; i++)
  76. {
  77. memcpy(&my_sizet_pionter3[i], &my_vector_int[i], sizeof(size_t));
  78. }
  79. clock2 = clock();
  80. std::cout << "time_memcpy_memset_one: " << clock2 - clock1 << std::endl;
  81. std::cout << my_sizet_pionter3[num - 1] << std::endl;
  82. //-----------------------------------------------------------------
  83.  
  84.  
  85.  
  86.  
  87.  
  88.  
  89. //-----------------------------------------------------------------
  90. size_t* my_sizet_pionter4 = (size_t*)malloc(num * sizeof(size_t));
  91.  
  92.  
  93. for (size_t i = 0; i < num; i++)
  94. {
  95. my_sizet_pionter4[i] = 0;
  96. }
  97. std::cout << my_sizet_pionter4[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий цикл.
  98.  
  99.  
  100.  
  101. clock1 = clock();
  102. for (size_t i = 0; i < num; i++)
  103. {
  104. memcpy(&my_sizet_pionter4[i], &my_vector_int[i], sizeof(size_t));
  105. }
  106. clock2 = clock();
  107. std::cout << "time_memcpy_cycle_zero: " << clock2 - clock1 << std::endl;
  108. std::cout << my_sizet_pionter4[num - 1] << std::endl;
  109. //-----------------------------------------------------------------
  110.  
  111.  
  112.  
  113.  
  114.  
  115. //-----------------------------------------------------------------
  116. size_t* my_sizet_pionter5 = (size_t*)malloc(num * sizeof(size_t));
  117.  
  118.  
  119. for (size_t i = 0; i < num; i++)
  120. {
  121. my_sizet_pionter5[i] = 0;
  122. }
  123. std::cout << my_sizet_pionter5[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий цикл.
  124.  
  125.  
  126. clock1 = clock();
  127. for (size_t i = 0; i < num; i++)
  128. {
  129. memcpy(&my_sizet_pionter5[i], &my_vector_int[i], sizeof(size_t));
  130. }
  131. clock2 = clock();
  132. std::cout << "time_memcpy_cycle_one: " << clock2 - clock1 << std::endl;
  133. std::cout << my_sizet_pionter5[num - 1] << std::endl;
  134. //-----------------------------------------------------------------
  135. }
Success #stdin #stdout 0.23s 471928KB
stdin
Standard input is empty
stdout
time_memcpy_without_all: 12734
7
0
time_memcpy_memset_zero: 12463
7
72340172838076673
time_memcpy_memset_one: 14224
7
0
time_memcpy_cycle_zero: 15984
7
0
time_memcpy_cycle_one: 13937
7