Другие языки программирования и технологии

Вопрос по Си. if ((i++)==10) и i++ if (i==10) будет ли первый пример работать быстрее чем второй?

"++i" - сначала нарастить, потом использовать
"i++" - сначала использовать, потом нарастить

"if ((++i)==10)" и "i++, if (i==10)" - одинаковы по сути, но могут отличаться по скорости в зависимости от компилятора и оптимизатора.

А предлагаемые
"if ((i++)==10)" и "i++, if (i==10)" - вообще разную логику реализуют. В одном сравнивается до наращивания, а в другом после. и многое зависит от того используется ли это i в дальнейшем. Оптимизатор может инкремент в первом вообще выкинуть, если i потом не используется.
Карлос Сантана
Карлос Сантана
75 320
Лучший ответ
все зависит от компилятора, но в итоге если и будет разница в 2-4 цикла, это ни очем.
Fallen Angel
Fallen Angel
74 779
Операции одинаковые, хоть и в разном порядке, так что скорость будет, скорее всего, одинаковая. Но вообще зависит от оптимизатора.
А вообще - в чем проблема? Загоните в цикл и рассчитайте, за сколько 1000000 раз выполнится...
не будет. но работать они будут по разному. В первом случае, сравнение будет происходить до инкремента, а во втором - после :) (если я правильно помню конечно, сам на delphi пишу, там таких конструкций нету)
ИК
Иван Королёв
42 952
Sergey Nemiroff По вашему вызов переменной не занимает никакого времени?
Проверьте это программно.
Duman S@dv@k@s@v
Duman S@dv@k@s@v
1 274
Ассемблерный код идентичен. Скорость одинакова.
Все врут, а "Бахарев" и "капитан гугл" врут особенно яростно.

Если компилятор оптимизирует - то второй код может работать быстрее (там i++ может быть оптимизировано до ++i). Оптимизация возможна, т. к. во втором примере значение, возвращаемое i++ не используется.

Но это как сравнивать скорость закипания воды в чайнике и скорость велосипеда ) - код разный - "Матвейчук" правду говорит - в первом случае сравнение выполняется над копией переменной i (созданной при инкременте и имеющей старое значение - то, которое было у i до инкремента) , во втором - непосредственно над i подсле инкремента.
GC
Giorgi Chechelashvili
1 140
Александр Заграй а что делает ++i ?