0

我正在 Aptana (ruby IDE) 中创建一个程序,并在 ruby​​ 数组上进行大量数学运算,并且经常添加更多数学运算,从结果中创建变量。从那里做更多的数学,等等。然而,每次我运行我的脚本时,它首先必须重新读取我的文件(几兆字节)并将其放入数组中。这需要时间。

现在我对编程真的很陌生,所以我对一般编程的工作原理仍然缺乏一些了解。但是我该如何解决这个问题呢?

如果我猜测这将如何完成。我会说也许将我的程序分成 2 个文件并在不停止的情况下运行第一个数组。另一个 ruby​​ 文件将使用数组文件。我不知道那会怎么做。

我接近解决方案了吗?

另外我希望你注意到我说我正在开发 aptana。我什至没有尝试正常运行我的脚本。我假设在那里我会遇到完全相同的问题。

4

2 回答 2

0

您可能可以使用 irb 来执行此操作。也就是说,您启动 ruby​​ 解释器,并且如果您的数组本身没有改变,您加载一次数组。之后,您可以针对该数组运行操作。

您可以通过将代码复制到文件中来永久捕获更改,或者您可以将算法/数学写入脚本文件并重复将文件加载到解释器中以访问解释器中的新方法或重写方法。

在 IRB rub​​y​​ 上加载文档”可能会帮助您了解这是如何完成的。

于 2012-08-16T19:37:03.700 回答
0

任何让进程保持运行并从另一个进程读取/写入它的方法都将比仅在脚本启动时读取数据并在脚本完成时将其写出要复杂得多。仅仅为了避免读取和写入几兆字节的数据,管理多个进程并不值得。

我不确定您当前是如何写出和读取文件的,但一个不错的选择是使用Ruby 的内置 YAML 支持

序列化:

require 'yaml'

arr = [1, 2, 3, 4]

arr.to_yaml(File.new('test.yml', 'w'))

反序列化:

require 'yaml'

arr = YAML::load(File.new('test.yml', 'r'))

p arr

# => [1, 2, 3, 4]

显然,您仍然必须每次都加载数组,但至少您不必为数组中已经计算的值重复所有数学运算。

于 2012-08-16T19:40:49.490 回答