#include <vector>
#include <stdlib.h>
#include <memory.h>
#include <iostream>
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;
}
size_t * my_vector_int = my_vector_rand.data();
//-----------------------------------------------------------------------------------
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_int[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_int[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_int[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_int[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] = 0;
}
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_int[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;
//-----------------------------------------------------------------
}