Описание проблемы
Ниже у меня есть программа, которая выполняет две простые операции сложения и умножения. Затем я сохраняю сумму этих двух простых операций в двух соответствующих переменных с именами total1 и total2. С точки зрения вычислений, для полного выполнения total2 потребуется больше времени. То, как я реализовал код, в настоящее время я синхронизирую всю симуляцию обеих математических операций.
Вопрос
Можно ли замерять только конечный результат total1 и total 2 отдельно? Я спрашиваю, так как хочу получить конкретное время total1 и total2 по отдельности.
Цель задачи
Я полностью осознаю, что long long дорог в отношении памяти и не является самым эффективным способом сэкономить память. Единственная цель этого кода и вопроса - синхронизация, а не оптимизация кода.
C-код
#include <stdio.h>
#include <time.h>
int main()
{
long long total1 = 0, total2 = 0, i = 0;
double simulation_time = 0;
clock_t Start = clock();
do
{
total1 += i + i;
total2 += i * i * i * i;
i++;
} while (i < 1000000000);
clock_t End = clock();
printf("Total 1 = %u \n", total1);
printf("Total 2 = %u \n", total2);
simulation_time = (double)(End - Start) / CLOCKS_PER_SEC;
printf("Runtime of Whole Simulation using clock_t: %f\n", simulation_time);
return 0;
}
i = 0
перед вторым циклом) я получаюAddition 0.23
иMultiplication 0.68
. Но в исходном коде я получаю всего0.68
. Итак, что мы измеряем? Подсказка: на ПК с несколькими исполняющими устройствами add и mul могут выполняться параллельно. 24.06.2018