Я запускал приведенный ниже код, который практически ничего не делает. Он просто добавляет 2 и четыре 100 миллионов раз и выводит время выполнения.
#include "time.h"
#include <iostream>
using namespace std;
void add (){
int tot = 2+4;
}
void main(){
int t = clock();
int count = 0;
while(count<100000000){
int tot = 2+4;
count++;
}
cout <<endl<< "runtime = " << fixed <<(double) (clock() - t) / CLOCKS_PER_SEC <<"s" << endl;
}
Но мне было интересно увидеть разницу во времени, когда я делаю то же самое, но вызываю функцию. Поэтому я заменил строку «int tot = 2 + 4» на «add ()».
Я ожидал, что вторая среда выполнения будет немного дольше, но она оказалась намного дольше. Первая реализация = .3s
, а вторая реализация = 3s
.
Я понимаю, что для вызова функции требуется использовать стек для хранения адреса возврата и локальных данных. Но он, должно быть, делает намного больше , чем это?
Было бы здорово, если бы кто-нибудь мог объяснить мне, что именно вызывает большую разницу во времени выполнения, или, может быть, я делаю что-то глупое.