@DjTolib

Где то слышал что префиксный инкремент работает быстрее чем постфиксный. Это так?

int i = 0;
i++;
++i;
  • Вопрос задан
  • 468 просмотров
Решения вопроса 3
gbg
@gbg Куратор тега C++
Любые ответы на любые вопросы
Все уже изучено

Коротко - используйте везде префиксный, тогда отладочный код будет работать чуточку (или даже существенно) быстрее, а сам код будет выглядеть крепко, основательно - как будто сениор писал.
Ответ написан
Комментировать
@res2001
Developer, ex-admin
Не замерял скорость. И даже не смотрел в дизасемблере реализацию.
Но предлагаю просто разложить обе операции на примитивные ассемблерные инструкции (где нет инкремента, данные хранятся в памяти, а считаются в регистрах). Примерно так будет в псевдокоде:
int preinc(int i) {
  mov r1, [i];
  add r1, 1;
  mov [i], r1;
  return r1;
}
int postinc(int i) {
  mov r1, [i];
  mov r2, r1;
  add r2, 1;
  mov [i], r2;
  return r1;
}

Видно, что у постфиксного варианта на одну операцию больше, чем у префиксного. А так же постфиксный использует 2 регистра, тогда как префиксный 1.
Логика работы префиксного проще и понятней. Так что используйте по умолчанию всегда префиксный. И только тогда когда действительно необходимо постфиксный.

А теперь представьте, что операция производится не надо встроенным типом, а надо классом. В этом случае дополнительные затраты могут быть гораздо существенней.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
CTRL+ Москва
от 250 000 до 320 000 ₽
CTRL+ Москва
от 200 000 до 300 000 ₽
CTRL+ Белград
от 250 000 до 320 000 ₽
22 нояб. 2024, в 00:55
500 руб./за проект
21 нояб. 2024, в 23:30
300000 руб./за проект
21 нояб. 2024, в 22:21
3000 руб./в час