Я сделал простую программу на С++ для сравнения производительности между двумя подходами - перейдите по значению и перейдите по ссылке. Фактически переходите по значению, выполненному лучше, чем по ссылке.
Вывод должен заключаться в том, что при передаче по значению требуется меньше тактовых циклов (инструкций)
Я был бы очень рад, если бы кто-то мог подробно объяснить , почему передавать по значению требуется меньше тактовых циклов.
#include <iostream>
#include <stdlib.h>
#include <time.h>
using namespace std;
void function(int *ptr);
void function2(int val);
int main() {
int nmbr = 5;
clock_t start, stop;
start = clock();
for (long i = 0; i < 1000000000; i++) {
function(&nmbr);
//function2(nmbr);
}
stop = clock();
cout << "time: " << stop - start;
return 0;
}
/**
* pass by reference
*/
void function(int *ptr) {
*ptr *= 5;
}
/**
* pass by value
*/
void function2(int val) {
val *= 5;
}