R0 CREW

С++ Пишем быстрый код, Твики функций

ru
#1

⁠Друзья, предлагаю тут выкладывать маленькие хаки для оптимизации работы кода, испльзуемые обычно людьми стандартные решения не всегда эффективны.

Вот к примеру такая простая функция как i++ на самом деле не эффективна,
почему вместо неё следует использовать ++i? scenic

#2

ну тут можно и поспорить, смотря для какого случая использовать:)

А идею с лайфхаками поддерживаю:)

#3

К примеру в циклах:

#4

Очередной бред. Вы это сами придумали?

[/QUOTE]

Я вам страшное скажу:

между этим:

for( unsigned int i = 0; i < 12; ++i )

и этим:

for( unsigned int i = 0; i < 12; i++ )

Разницы вообще никакой не будет.

#5

А анализатор PVS Studio говорит, что тут потеря быстродействия

#6

Ну, что я могу сказать, значит на свалке его место.

Даже если предположить надуманный пример, по типу такого:

a) result = i++
b) result = ++i

В случае “а” он разложится в что-то подобное:

mov eax, i
mov result, eax
inc eax
mov i, eax

А в случае “b”:

mov eax, i
inc eax
mov i, eax
mov result, eax

И где тут потеря быстродействия? Про:

Я вообще промолчу. Это все равно что “1 + 2 = 3”, а “2 + 1 != 3” (PVS Studio).

#7

Может быть Increase процессор быстрей обрабатывает перед чтением переменной? Хотя сам не очень понимаю

#8

Это не так. Для unsigned int он промолчит. Диагностическое правило V803 срабатывает только в том случае, когда операция ++it применяется к переменной типа класс. Почему это имеет смысл описано здесь: Есть ли практический смысл использовать для итераторов префиксный оператор инкремента ++it, вместо постфиксного it++.

#9

Тут согласен.

#10

Немного не в тему (что ли?), но все-таки должен сюда написать:
Тем, кто хочет выучить Си быстро и эффективно, ищем видео-курс по словосочетанию “Specialist rus C” на 3,14рацкой бу}{те. Очень рекомендую

#11

AbreC ты про этот курс?