Я создаю программу PostScript, которая должна обрабатывать до десяти миллионов точек данных.У меня проблемы с хранением этих данных в файле.Вот упрощенная версия того, что у меня сейчас есть:
% (данные и вызовы процесса)
точка данных 1 точка данных 2 ... точка данных n процесс
точка данных n + 1 точка данных n + 2 ... точка данных 2n процесс
...
datapoint (m-1) n + 1 ... datapoint mn process
Процесс - это функция, которая берет точки в стеке и выполняет вычисления на них, что приводит кразличные линии, нарисованные на странице.Поскольку в стеке есть максимальное количество точек, которые можно поместить в него, я должен разделить данные на куски для обработки.Это нормально, однако я хотел бы обработать эти данные дважды двумя разными способами (а позже, возможно, более чем двумя способами).Мой первоначальный план заключался в следующем.У меня было бы 2 функции, process1 и process2, и функция процесса была бы заменена на эту:
/process{
mode 1 eq{process1}if
mode 2 eq{process2}if
} def
, а затем я бы поместил весь список данных и вызовы функции процесса в какую-то другую функцию, называемуюнапример, «processData».
/processData{
datapoint1 ... datapointn process
...
datapointnm process
}def
тогда я смогу выполнить оба типа обработки следующим образом:
/ mode 1 def processData
/ mode 2 def processData
Преимуществом этого было бы то, что мне не нужно было бы снова записывать все данные, которые занимали бы слишком много места, особенно когда мне нужно выполнить несколько процессов (а не только 2).Это, однако, не работает, потому что, как и в стеке, максимальный размер зависит от количества вещей, которые могут использоваться в функции.
Мой второй план состоял в том, чтобы вместо этого поместить данные в массив и затем выполнить циклданные в два раза примерно так:
/array [datapoint1 datapoin2 ... datapointmn] def
1 1 n m mul {array exch get process1} for
1 1 n m mul {array exch get process2} for
Однако это тоже не работает, поскольку массивы также имеют максимальную длину.Затем я попытался закодировать данные в виде символов и поместить их в строку, но строки также имеют максимальную длину.Я рассматриваю возможность использования массива строк, но подозреваю, что есть лучший способ сделать это.
Как это можно сделать?Спасибо.