Пройти цикл туда, а потом обратно

tuz05yaru

как повернуть цикл обратно?
то есть чтоб он до конца проработал и затем начал работать в обратном порядке, вернулся к началу и снова пошел работать.
сорри если плохо объяснил

uncle17

Вопрос понятен. Делаешь два цикла. Внешний - на проверку четности. Дальше ясно?

tuz05yaru

все, схавал
сенк у

uncle17

десять баксов:)

tuz05yaru

могу дать две купюры достоинством 3 и 7 (целой 10ки нету)

sevast82

Если в теле цикла есть обращения к памяти, то (по крайней мере, на Intel или AMD) проход по памяти "против шерсти" будет очень неэффективен по скорости.
С другой стороны, очень полезно для ускорения циклов совмещать несколько итераций одного цикла.
Поэтому полезно организовать цикл так: проходим от адреса A до адреса B (неважно, в каком направлении) с достаточно большим шагом P (обычно лучший выбор P = 8, реже 4 или 16). При этом ячейки между Pn и Pn+1 обрабатываем внутри тела цикла в одной итерации явным образом, проходя по памяти в естественном направлении.
В итоге получится:
1. В каком бы направлении цикл ни работал, доступ к памяти - в естественном порядке, то есть максимально эффективный.
2. Совмещение итераций загружает конвейр процессора, дополнительно ускоряя программу.

aleks058

Пускай уж лучше об этом компилятор заботится.
Через три месяца ты дооолго будешь втыкать, что же там происходит....

bastii

Смотря, что за цикл, для чуть более сложных циклов (когда много операций и задействованных различных структур в одной итерации) такие извращения не имеют смысл, не говоря о том, что и без них часто проблемы с читабельностью.
Оставить комментарий
Имя или ник:
Комментарий: