память и проход с начала, а не с конца будет быстрее?
Можно предложить более рациональное на первый взгляд решение задачи: просматривать массив в обратном порядке, суммируя элементы, и завершить цикл, как только встретится отрицательный элемент:
<код>
В этой программе каждый элемент массива анализируется не более одного раза,
а ненужные элементы не просматриваются вообще. Казалось бы, мы позаботились об эффективности, но на самом деле результат может оказаться даже хуже,
чем в предыдущем варианте! Это связано с тем, что в современных процессорах
для оптимизации применяется опережающее чтение в быстродействующую память (кэш), поэтому при «естественном» порядке просмотра массива следующие элементы окажутся в кэше с большей вероятностью.
Потому что в страйд попадает участок вида adr + положительный оффсет
Обсуждают сегодня