powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему ++x быстрее чем x++
13 сообщений из 13, страница 1 из 1
почему ++x быстрее чем x++
    #34924278
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот смотрю в Disassembly, вроде код тот же самый?

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
		x++;
 00422953   mov         eax,dword ptr [x] 
 00422956   add         eax, 1  
 00422959   mov         dword ptr [x],eax 

		++x;
0042295C  mov         eax,dword ptr [x] 
0042295F  add         eax, 1  
 00422962   mov         dword ptr [x],eax 

Может быть это компилятор оптимизировал, но вообще почему ++x, быстрее чем x++.
И еще кому нужен INC в ассемблере ??
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924296
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Во первых у тебя переменная не используется (хотя в этом случае будет просто перестановка операций), во вторых он быстрее для сложных типов. Искать этот баян в архивах форума.
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924377
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
налицо дефект логики
если удалось соптимизировать (читай привести x++ -> ++x) для данного конкретного случая, это вовсе не значит, что такая "оптимизация" (подчистка соплей за программистом) возможна всегда
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924417
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)налицо дефект логики
если удалось соптимизировать (читай привести x++ -> ++x) для данного конкретного случая, это вовсе не значит, что такая "оптимизация" (подчистка соплей за программистом) возможна всегда
Да, но тогда как выглядет не оптимизированый код.
И еще вопрос был зачем вообще INC.
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924521
Akh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ParadoxxИ еще вопрос был зачем вообще INC.

Возможно inc только места меньше занимает, а скорость такаяже, тогда попробовать соптимизировать по скорости. Возможно хавать инструкции одного размера удобнее. Возможно, тестируемый компилятор просто не обращает внимания на подобные мелочи. :)
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924550
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ParadoxxДа, но тогда как выглядет не оптимизированый код.


итератор от дека скажем инкрементни да посмотри
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924564
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
или таки используй значение которое тебе x++ вернет
дабы о компилятора побуждений что то оптимизировать не было
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34924592
Leshij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
On Thu, 08 Nov 2007 11:49:34 +0300, Paradoxx <nospam@sql.ru>; wrote:

> Да, но тогда как выглядет не оптимизированый код.
> И еще вопрос был зачем вообще INC.
При отключенной оптимизации компиляторы обычно дословно переводят
программу на ассемблер. Если есть локальная переменная -- компилятор
честно положит ее на стек; правда не понятно, почему нельзя было
использовать INC EAX, но компилятору наверное виднее. В релиз версии
переменая скорее всего будет в регистре и увеличиваться будет через INC.
INC, кстати говоря и короче и быстрее, чем ADD, хотя бы потому, что не
надо загонять в регистр immediate operand.
--
Здесь у нас туманы и дожди, здесь у нас холодные рассветы,
Здесь на неизведанном пути ждут замысловатые сюжеты!
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34925095
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Paradoxx пишет:
> Может быть это компилятор оптимизировал, но вообще почему ++x, быстрее
> чем x++.

Оптимизировал. Вообще ++x быстрее особенно для сложных типов типа
итераторов, потому что не надо копировать возвращаемое значение.

++x ==

{
увеличить переменную x;
взять значение переменной х;
}

x++ ==
{
увеличить переменную x;
взять СТАРОЕ значение переменной х;
}

"взять СТАРОЕ значение переменной х" может потребовать
от сложного типа копирования самого себя в реализации для
последующего возвращения старого значения себя. Это может
быть накладно. Поэтому если x++ не нужен фактически, лучше
использовать ++x.

> И еще кому нужен INC в ассемблере ??

Эта комманда уже в своем коде неявно содержит константу 1, которая прибавляется
к значению. Поэтому она является одноместной и занимает меньше места в памяти.
Но вы правы, в некоторых ассемблерах ее нет. Но с другой стороны, если есть
место в адресном пространстве кодов комманд, почему бы и не сделать ?
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34925101
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akh пишет:

> Возможно inc только места меньше занимает, а скорость такаяже, тогда
> попробовать соптимизировать по скорости. Возможно хавать инструкции
> одного размера удобнее.

Скорость одноместной операции также быстрее - не нужно загружать
второй операнд.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34926477
teras
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Paradoxx wrote:
> И еще кому нужен INC в ассемблере ??

vc генерит INC eax, если оптимизировать по размеру и add eax,1 при
оптимизации по скорости. Но качать документацию чтобы узнать почему - не
хочется.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34926490
Фотография Paradoxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот что нашел в (IA-32 Intel® Architecture Optimization Reference Manual point 2-68)

Assembly/Compiler Coding Rule 42. (M impact, H generality) inc and
dec instructions should be replaced with an add or sub instruction, because
add and sub overwrite all flags, whereas inc and dec do not, therefore
creating false dependencies on earlier instructions that set the flags.

Выходит Intel не советует INC или DEC.
...
Рейтинг: 0 / 0
почему ++x быстрее чем x++
    #34931870
http://www.wasm.ru/forum/viewtopic.php?id=21875
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / почему ++x быстрее чем x++
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]