При использовании функции clock () во времени. Я заметил поведение, которое не мог объяснить. В приведенном ниже коде я использую идентичные циклы for для сокращения времени обработки. Я не вижу какой-либо логической причины, по которой один будет занимать больше времени, чем другой, но на основании того, что я вижу с помощью функции clock (), может показаться, что каждая итерация занимает примерно на 7-10% больше времени. В чем причина этого?
Я добавил типичное представление вывода. Скомпилированный ASM содержит более 1300 строк кода. Я не думал, что это будет конструктивно, но если вам нужно это увидеть, я могу отправить его вам по электронной почте.
Выход:
a: 3835
b: 4155
Percentage increase in execution time: 8%
c: 4423
Percentage increase in execution time: 15%
d: 4699
Percentage increase in execution time: 22%
e: 4976
Percentage increase in execution time: 29%
Источник:
#include <ctime>
#include <iostream>
int main()
{
clock_t a, b, c, d, e;
unsigned int aResult, bResult, cResult, dResult, eResult;
a = clock();
for(int i = 0; i < 100000; i++);
aResult = a;
std::cout << "a: " << aResult << std::endl;
b = clock();
bResult = b;
for(int i = 0; i < 100000; i++);
std::cout << "b: " << bResult << std::endl;
std::cout << "Percentage increase in execution time: "
<< 100 * (bResult - aResult)/aResult << "%" <<std::endl;
c = clock();
for(int i = 0; i < 100000; i++);
cResult = c;
std::cout << "c: " << cResult << std::endl;
std::cout << "Percentage increase in execution time: "
<< 100 * (cResult - aResult)/aResult << "%" <<std::endl;
d = clock();
for(int i = 0; i < 100000; i++);
dResult = d;
std::cout << "d: " << dResult << std::endl;
std::cout << "Percentage increase in execution time: "
<< 100 * (dResult - aResult)/aResult << "%" <<std::endl;
e = clock();
for(int i = 0; i < 100000; i++);
eResult = e;
std::cout << "e: " << eResult << std::endl;
std::cout << "Percentage increase in execution time: "
<< 100 * (eResult - aResult)/aResult << "%" <<std::endl;
}