Предположим, что у меня есть несколько операторов, которые я хочу выполнить в фиксированный порядок. Я хочу использовать g++ с уровнем оптимизации 2, поэтому некоторые заявления могут быть переупорядочены. Какие инструменты нужно выполнять для упорядочения инструкций?
Рассмотрим следующий пример.
using Clock = std::chrono::high_resolution_clock;
auto t1 = Clock::now(); // Statement 1
foo(); // Statement 2
auto t2 = Clock::now(); // Statement 3
auto elapsedTime = t2 - t1;
В этом примере важно, чтобы инструкции 1-3 выполнялись в данный порядок. Однако, не может компилятор считать утверждение 2 независимо от 1 и 3 и выполнить код следующим образом:
using Clock=std::chrono::high_resolution_clock;
foo(); // Statement 2
auto t1 = Clock::now(); // Statement 1
auto t2 = Clock::now(); // Statement 3
auto elapsedTime = t2 - t1;