У меня есть функция внутри цикла внутри функции. Внутренняя функция приобретает и хранит большой вектор данных в памяти (в качестве глобальной переменной ... Я использую «R», который похож на «S-Plus»). Цикл проходит через длинный список данных, которые необходимо получить. Внешняя функция запускает процесс и переходит в список собираемых наборов данных.Хуже греха: побочные эффекты или прохождение массивных объектов?
for (dataset in list_of_datasets) {
for (datachunk in dataset) {
<process datachunk>
<store result? as vector? where?>
}
}
Я запрограммировал внутренняя функция для хранения каждого набора данных, прежде чем перейти к следующему, поэтому все работы внешней функции происходит как побочные эффекты на глобальных переменных ... большой нет-нет. Является ли это лучше или хуже, чем сбор и возвращение гигантского вектора векторов векторов вектора памяти? Есть ли превосходный третий подход?
Будет ли изменен ответ, если я буду хранить векторы данных в базе данных, а не в памяти? В идеале, я хотел бы иметь возможность прекратить выполнение функции (или не выполнить ее из-за сетевых тайм-аутов), не теряя при этом всю информацию, обработанную до завершения.
Я рекомендую редактировать этот пост, чтобы включить некоторые краткие псевдокод так легче увидеть, что вы пытаетесь сделать – 2008-09-17 03:52:45
Да, пожалуйста, добавьте псевдокод , невозможно понять, что вы имеете в виду. Когда вы говорите «процесс ... и сохраняете результат», вы имеете в виду «хранить ту же самую строку» или вектор (из целых чисел, ссылки на слова) или что? Сохраняете ли вы его как запись в каком-то огромном массиве данных/матрице/матрице? Дайте нам некоторое представление о количестве строк, столбцов, файла, блоков и векторных размеров и вашей рабочей памяти? – smci 2016-04-28 13:23:48