Сравнение скорости передачи в функцию в структуре или по отдельности
Подскажите пожалуйста, почему в данном случае передача в функцию по ссылке 4ех разных переменных быстрее, чем передача в функцию по ссылке структуры из этих 4ех переменных?
#include <iostream>
#include <vector>
#include <string>
#include <ctime>
using namespace std;
struct my_struct_
{
vector<int>my_vector_int;
int my_int[10];
char my_char[10];
string my_string;
};
void my_funcas_po_ssilke(vector<int>&my_vector_int, int* my_int, char* my_char, string& my_string) //--------------------------->
{
//Выполняем просто какие то действия над переданными данными:
for (int i = 0; i < my_vector_int.size(); i++)
{
my_vector_int[i] = my_vector_int[i] * 2;
}
for (int i = 0; i < my_vector_int.size(); i++)
{
my_char[i] = 'A';
}
for (int i = 0; i < my_vector_int.size(); i++)
{
my_int[i] = my_int[i]*2;
}
for (int i = 0; i < my_vector_int.size(); i++)
{
my_string[i] = my_char[i];
}
}
void my_funcas_po_ssilke_struct(struct my_struct_& my_srtuctar) //--------------------------->
{
//Выполняем просто какие то действия над переданными данными:
for (int i = 0; i < my_srtuctar.my_vector_int.size(); i++)
{
my_srtuctar.my_vector_int[i] = my_srtuctar.my_vector_int[i] * 2;
}
for (int i = 0; i < my_srtuctar.my_vector_int.size(); i++)
{
my_srtuctar.my_char[i] = 'A';
}
for (int i = 0; i < my_srtuctar.my_vector_int.size(); i++)
{
my_srtuctar.my_int[i] = my_srtuctar.my_int[i] * 2;
}
for (int i = 0; i < my_srtuctar.my_vector_int.size(); i++)
{
my_srtuctar.my_string[i] = my_srtuctar.my_char[i];
}
}
int main()
{
unsigned long long num = 99999999;
int clock1;
int clock2;
//--------------------------------------------------
int my_int[10] = { 1,2,3,4,5,6,7,8,9,10 };
char my_char[10] = { '1','2','3','4','5','6','7','8','9','1' };
string my_string = "вапкерrhfg56uruhdfrthdfghjtdfyjbrft6234";
vector<int>my_vector_int = { 1,2,3,4,5,6,7,8,9,10 };
//--------------------------------------------------
//--------------------------------------------------
my_struct_ my_structar;
memcpy(my_structar.my_char, my_char, sizeof(my_char));
memcpy(my_structar.my_int, my_int, sizeof(my_int));
my_structar.my_string = my_string;
my_structar.my_vector_int = { 1,2,3,4,5,6,7,8,9,10 };
//--------------------------------------------------
//--------------------------------------------------
clock1 = clock();
for (unsigned long long i = 0; i < num; i++)
{
my_funcas_po_ssilke(my_vector_int, my_int, my_char, my_string);
}
clock2 = clock();
cout << clock2 - clock1 << endl;
//--------------------------------------------------
cout << endl;
//--------------------------------------------------
clock1 = clock();
for (unsigned long long i = 0; i < num; i++)
{
my_funcas_po_ssilke_struct(my_structar);
}
clock2 = clock();
cout << clock2 - clock1 << endl;
//--------------------------------------------------
}
Время соответственно: 1782
2701