Иногда возникает потребность сравнить различные варианты решения задачи на эффективность. Для примера будем генерировать миллионы раз случайное число и складывать последние цифры числа и сами числа и выводить время выполнения.
#include <iostream> // std::cout, srand(), rand()
#include <ctime> // std::time
#include <iomanip> // std::setw(), std:: left
const int NUMS = 1e7;
unsigned int resi = 0;
double resf = 0;
void calculation(int ri, double rf){ // Функция куда можно помещать измерения
resi += ri % 10; // Складываем последние цифры номера
resf += rf; // Складываем числа
}
int main(){
srand(time(NULL)); // Используем текущее время для инициализации генератора
for(int n = 0; n < NUMS; n++){ // Итерации
int ri = rand(); // Генерируем случайное целое число чтобы не дать оптимизировать компилятору код
double rf = static_cast<double> (ri) / RAND_MAX; // Приводим случайное число к double 0...1
calculation(ri, rf);
}
std::cout << "resi = " << resi << "\nresf = " << resf << "\ntime = " << clock() << " ms. \n";
}
Вывод программы.
resi = 44998682 resf = 5.0002e+006 time = 232 ms.