А именно - выполнять все действия с элементами множества (преобразование, оценка, проверка, вычисление интегральных характеристик) во время одного-единственного перебора множества.
В который раз встречаю - выбираем элементы из БД, затем проходимся по множеству этих элементов и строим одни интегральные характеристики, потом ещё раз проходимся и проверяем, затем перебираем проверенные и преобразуем их...
Когда действительно может потребоваться двойной проход? Когда к каждому элементу надо будет применить интегральную характеристику. Когда невозможно вычислить интегральные характеристики в несортированном множестве (впрочем, как правило сортировка это забота источника данных).
Когда мы экономим память и не экономим время - когда вся используемая память должна быть "О большое от мощности изначального множества". (но обычно память не экономится, потому что хранится и то множество, и это, ещё несколько всяких, и все отчёты полностью формируются в памяти прежде чем быть отправленными наружу)
В который раз встречаю - выбираем элементы из БД, затем проходимся по множеству этих элементов и строим одни интегральные характеристики, потом ещё раз проходимся и проверяем, затем перебираем проверенные и преобразуем их...
Когда действительно может потребоваться двойной проход? Когда к каждому элементу надо будет применить интегральную характеристику. Когда невозможно вычислить интегральные характеристики в несортированном множестве (впрочем, как правило сортировка это забота источника данных).
Когда мы экономим память и не экономим время - когда вся используемая память должна быть "О большое от мощности изначального множества". (но обычно память не экономится, потому что хранится и то множество, и это, ещё несколько всяких, и все отчёты полностью формируются в памяти прежде чем быть отправленными наружу)