Описание тега as-if
Правило "как если бы" допускает произвольную оптимизацию компилятора при условии, что наблюдаемое поведение не меняется.
1
ответ
Как-будто правило и снятие выделения
" Правило " как если "" дает компилятору право оптимизировать или переупорядочивать выражения, которые не повлияют на вывод и правильность программы при определенных правилах, таких как; §1.9.5 Соответствующая реализация, выполняющая правильно сформ…
20 янв '16 в 18:40
2
ответа
Сроки против правила "как будто"
Есть большой вопрос о правиле "как будто" вообще, но мне интересно, есть ли какие-то исключения, когда дело доходит до измерения времени. Учтите это (взято отсюда слегка изменено): using std::chrono; auto begin = steady_clock::now(); auto result = s…
04 окт '17 в 19:34
4
ответа
Цикл с нулевым временем выполнения
Возможно ли иметь цикл с нулевым временем выполнения? Я думаю, что даже пустой цикл должен иметь время выполнения, поскольку с ним связаны накладные расходы.
06 ноя '14 в 04:23
2
ответа
Разрешено ли переупорядочение магазина правилом C++ как-будто?
Правило "как если" в основном определяет, какие преобразования разрешено выполнять реализации в легальной программе на C++. Короче говоря, все преобразования, которые не влияют на наблюдаемое поведение программы , разрешены. Что касается того, что и…
14 авг '14 в 00:10
4
ответа
Оценка констант в для контура
for(int i = 0; i < my_function(MY_CONSTANT); ++i){ //code using i } В этом примере будет my_function(MY_CONSTANT) будет оцениваться на каждой итерации или будет сохраняться автоматически? Зависит ли это от используемых флагов оптимизации?
14 окт '14 в 14:08
2
ответа
Почему копия elision является исключением из правила "как будто"?
Почему стандарт позволяет моему компилятору применять elision copy, даже если он связан с видимыми побочными эффектами, что нарушает правило "как будто"? Это как-то правдоподобно для меня, когда кто-то гарантирует исключение копирования, потому что …
11 июл '18 в 21:31
1
ответ
Почему бесконечный цикл не может быть устранен?
Правило "как будто" подпадает под следующие правила: Минимальные требования к соответствующей реализации: Доступ к изменчивым объектам оценивается строго по правилам абстрактной машины. При завершении программы все данные, записанные в файлы, должны…
25 мар '15 в 22:59
3
ответа
О сложности времени / пространства в стандартах C/C++
Недавно я прочитал кое-что об абстрактной машине и правиле "как будто" ( что такое правило "как будто"?) И требованиях к временной сложности стандартной библиотеки (например, такой: действительно ли list::size() O (n)?). Являются ли требования к про…
24 июн '19 в 04:44
2
ответа
Где формулировка или основы правила "как если бы" в стандарте C++?
После небольшого поиска в Google (например, site:eel.is "as if rule") Я не нашел подходящего места, где в стандарте C++ четко прописано так называемое правило "как если бы". Все, что я смог обнаружить, это то, что в тех местах стандарта, где он вызы…
06 май '20 в 18:52
4
ответа
Является ли объяснение упрощенного порядка ошибочным в cppreference?
В документацииstd::memory_orderна cppreference.com есть пример упрощенного заказа: Удобный заказ Атомарные операции помечены memory_order_relaxedне являются операциями синхронизации; они не устанавливают порядок между одновременными обращениями к па…
11 янв '20 в 19:35
2
ответа
В чем причина исключения копирования в C++?
По какой причине стандарт C++ позволяет (требует) компиляторам оптимизировать вызовы конструктора копирования (в определенных случаях), даже если он может содержать наблюдаемые побочные эффекты? Если я не ошибаюсь, правило "как будто" уже позволяет …
30 ноя '20 в 00:55
1
ответ
Разрешает ли правило «как если бы» такое изменение порядка выполнения
Как мы знаем, компилятор или ЦП могут изменить порядок выполнения по своему усмотрению, только если они следуют правилу «как если бы». Например, если у нас есть такой кусок кода: C = A + B; D = E + F; Компилятор или ЦП могут выполнять D = E + F пере…
24 мар '21 в 05:32
0
ответов
Возможно ли это изменение порядка выполнения
Как мы знаем, компилятор или ЦП могут изменить порядок выполнения по своему усмотрению, только если они следуют правилу «как если бы». Например, если у нас есть такой кусок кода: C = A + B; D = E + F; Компилятор или ЦП могут выполнять D = E + F пере…
25 мар '21 в 16:32
1
ответ
Псевдоним целых чисел со знаком и без знака во время оптимизации
Аsigned&не может быть инициализирован из (и наоборот), но строгие правила алиасинга позволяют читать/записыватьsignedобъект черезunsigned&(и наоборот), см. стандарт C++20 [basic.lval]#11.2 . Теоретически это можно использовать при оптимизаци…
10 ноя '22 в 06:03
1
ответ
Почему компилятор C++ не может исключить перемещение при перемещении POD в необязательный с RVO?
Рассмотрим следующий код (godbolt): #include <optional> #include <array> struct LargeType { std::array<int, 256> largeContents; }; LargeType doSomething(); std::optional<LargeType> wrapIntoOptional(){ return std::optional<…
25 ноя '22 в 11:02