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