Бенчмарки

Иногда возникает потребность сравнить различные варианты решения задачи на эффективность. Для примера будем генерировать миллионы раз случайное число и складывать последние цифры числа и сами числа и выводить время выполнения.


#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.
2023-04-10



Понравилась страница?
Добавить в закладки
Или поделиться!

Связанные темы

Ассемблерный листинг С++
Бенчмарки в С++
Рисование в консоли windows на С++
Функции в С++
Параметры функции в С++
Глоссарий С++. Идентификаторы, квалификаторы, модификаторы, объявление, определение и т.д..
Исключения в С++. Выбрасывание и ловля исключения.
Достоинства и недостатки C++
Сборка приложения без IDE C++ с помощью MinGW и Qt
Перегрузка функций и операторов в С++
Случайные числа в С++. Полиномиальная генерация случайных чисел.
Ссылки в С++
Рекурсия в С++. Примеры рекурсивных программ и без использования.
Шаблоны C++
Наименование переменных и стиль программирования
Версия компилятора С++
Время выполнения программы C++