Сравнение скорости передачи в функцию в структуре или по отдельности

Подскажите пожалуйста, почему в данном случае передача в функцию по ссылке 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


Ответы (0 шт):