#include <vector>
#include <iostream>
#include <cstring>
int main()
{
size_t num = 9999999;
//-----------------Наполнение вектора произвольными значениями--------
std::vector<size_t>my_vector_rand;
my_vector_rand.resize(num);
for (size_t i = 0; i < num; i++)
{
my_vector_rand[i] = rand() % 100;
}
//-----------------------------------------------------------------------------------
int clock1;
int clock2;
//-----------------------------------------------------------------
size_t* my_sizet_pionter1 = (size_t*)malloc(num * sizeof(size_t));
clock1 = clock();
for (size_t i = 0; i < num; i++)
{
memcpy(&my_sizet_pionter1[i], &my_vector_rand[i], sizeof(size_t));
}
clock2 = clock();
std::cout << "time_memcpy_without_all:" << clock2 - clock1 << std::endl;
std::cout << my_sizet_pionter1[num - 1] << std::endl;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
size_t* my_sizet_pionter2 = (size_t*)malloc(num * sizeof(size_t));
memset(my_sizet_pionter2, 0, num * sizeof(size_t));
std::cout << my_sizet_pionter2[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий memset.
clock1 = clock();
for (size_t i = 0; i < num; i++)
{
memcpy(&my_sizet_pionter2[i], &my_vector_rand[i], sizeof(size_t));
}
clock2 = clock();
std::cout << "time_memcpy_memset_zero:" << clock2 - clock1 << std::endl;
std::cout << my_sizet_pionter2[num - 1] << std::endl;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
size_t* my_sizet_pionter3 = (size_t*)malloc(num * sizeof(size_t));
memset(my_sizet_pionter3, 1, num * sizeof(size_t));
std::cout << my_sizet_pionter3[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий memset.
clock1 = clock();
for (size_t i = 0; i < num; i++)
{
memcpy(&my_sizet_pionter3[i], &my_vector_rand[i], sizeof(size_t));
}
clock2 = clock();
std::cout << "time_memcpy_memset_one:" << clock2 - clock1 << std::endl;
std::cout << my_sizet_pionter3[num - 1] << std::endl;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
size_t* my_sizet_pionter4 = (size_t*)malloc(num * sizeof(size_t));
for (size_t i = 0; i < num; i++)
{
my_sizet_pionter4[i] = 0;
}
std::cout << my_sizet_pionter4[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий цикл.
clock1 = clock();
for (size_t i = 0; i < num; i++)
{
memcpy(&my_sizet_pionter4[i], &my_vector_rand[i], sizeof(size_t));
}
clock2 = clock();
std::cout << "time_memcpy_cycle_zero:" << clock2 - clock1 << std::endl;
std::cout << my_sizet_pionter4[num - 1] << std::endl;
//-----------------------------------------------------------------
//-----------------------------------------------------------------
size_t* my_sizet_pionter5 = (size_t*)malloc(num * sizeof(size_t));
for (size_t i = 0; i < num; i++)
{
my_sizet_pionter5[i] = 1;
}
std::cout << my_sizet_pionter5[num - 1] << std::endl; //Нужен, чтобы компилятор не оптимизировал вышестоящий цикл.
clock1 = clock();
for (size_t i = 0; i < num; i++)
{
memcpy(&my_sizet_pionter5[i], &my_vector_rand[i], sizeof(size_t));
}
clock2 = clock();
std::cout << "time_memcpy_cycle_one:" << clock2 - clock1 << std::endl;
std::cout << my_sizet_pionter5[num - 1] << std::endl;
//-----------------------------------------------------------------
}