首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 > postscript如何存储大量数据?

postscript如何存储大量数据?
EN

Stack Overflow用户
提问于 2018-06-14 10:25:37
回答 1查看 0关注 0票数 0

进程是一个函数,在堆栈上取得点,并对它们进行计算,从而导致在页面上绘制各种线。因为堆栈有最大数量的点可以放在它上面,所以我必须将数据分成块来处理。我有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

但是,这不起作用,因为数组也有最大长度。然后我尝试将数据编码为字符,并将其全部放入字符串中,但字符串也具有最大长度。我正在考虑使用一个字符串数组

如何才能做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2018-06-14 20:06:01

可以将数据点放在外部文件中,并以多种不同的方式访问主程序中的数据点。假设文件名为datapoints.ps你可以用run运算符读取-在文件中。

/mode 0 def  (datapoints.ps) run
/mode 1 def  (datapoints.ps) run

或者可以从文件中读取“block”并分别处理它们。一次一个数字:

/f (datapoints.ps) (r) file def
{
    f token not {exit} if
    dup process1
    dup process2
    pop
} loop

一次一行:

/tokens {
    { token not {exit} if exch } loop
} def
/f (datapoints.ps) (r) file def
f 1000 string 
{
    {readline} stopped {
        pop length 2 mul string
    }{
        not {exit} if
        tokens
        count copy process1
        count copy process2
        clear
        f 1000 string
    } ifelse
} loop

如果知道需要处理的最大行长,这可能会更简单。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档