История изменений
Исправление r--r--r--, (текущая версия) :
они могут обрабатываться отдельными ветками оптимизации,
Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.
Нет. Отдельные ветки, про которые говорю я, это "вручную" запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.
То когда из цикла вызывается очень медленная функция.
Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.
Они существенно отличаются для unsigned и int.
В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.
Вот тебе корректный пример кода, где теоретически могла бы быть разница между знаковым и беззнаковым счётчиком.
Попробуй доказать свой тезис, модифицируя пример так, чтобы эта разница проявилась иначе, как выкидывание проверки переполнения для знакового числа.
Исправление r--r--r--, :
они могут обрабатываться отдельными ветками оптимизации,
Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.
Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.
То когда из цикла вызывается очень медленная функция.
Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.
Они существенно отличаются для unsigned и int.
В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.
Вот тебе корректный пример кода, где теоретически могла бы быть разница между знаковым и беззнаковым счётчиком.
Попробуй доказать свой тезис, модифицируя пример так, чтобы эта разница проявилась иначе, как выкидывание проверки переполнения для знакового числа.
Исправление r--r--r--, :
они могут обрабатываться отдельными ветками оптимизации,
Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.
Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.
То когда из цикла вызывается очень медленная функция.
Не фантазируй. Компилятор не отличает вызов "медленной" функции от вызова "очень медленной" функции.
Они существенно отличаются для unsigned и int.
В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.
Вот тебе корректный пример кода, где теоретически могла бы быть разница между знаковым и беззнаковым счётчиком.
Попробуй доказать свой тезис, модифицируя пример так, чтобы эта разница проявилась иначе, как выкидывание проверки переполнения для знакового числа.
Исправление r--r--r--, :
они могут обрабатываться отдельными ветками оптимизации,
Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.
Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.
То когда из цикла вызывается очень медленная функция.
Не фантазируй. Компилятор не отличает вызов «медленной» функции от вызова «очень медленной» функции.
Они существенно отличаются для unsigned и int.
В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.
Вот тебе корректный пример кода, где теоретически могла бы быть разница между знаковым и беззнаковым счётчиком.
Попробуй доказать свой тезис, модифицируя пример так, чтобы эта разница проявилась иначе, как выкидывание проверки переполнения для знакового числа.
Исходная версия r--r--r--, :
они могут обрабатываться отдельными ветками оптимизации, Так смысл UB именно в том, чтобы можно было использовать эти отдельные ветки оптимизации.
Нет. Отдельные ветки, про которые говорю я, это «вручную» запрограммированные случаи оптимизации на конкретных значениях входных данных == сценариях. Например, зануление. На них ты свой тезис доказать не можешь. Так как ты пытаешься доказать существование оптимизаций доступа к данным в зависимости только от знака счётчика, тебе его надо доказать для произвольных сценариев / данных.
То когда из цикла вызывается очень медленная функция.
Не фантазируй. Компилятор не отличает вызов «медленной» функции от вызова «очень медленной» функции.
Они существенно отличаются для unsigned и int.
В твоём примере там разница в первую очередь связана с расширением до 64-ёх бит.
Вот тебе корректный пример кода, где теоретически могла бы быть разница между знаковым и беззнаковым счётчиком.
Попробуй доказать свой тезис, модифицируя пример так, чтобы эта разница проявилась иначе, как выкидывание проверки переполнения для знакового числа.