Ruby 有任何外部设备可以像数组一样快吗?所以我不';我不需要在每次运行脚本时重新加载数组

Ruby 有任何外部设备可以像数组一样快吗?所以我不';我不需要在每次运行脚本时重新加载数组,ruby,Ruby,当我开发我的应用程序时,我需要一次又一次地做大量的数学运算,调整它,再次运行并观察结果 计算是在从大文件加载的数组上完成的。许多兆字节。不是很大,但问题是每次我运行脚本时,它首先必须将文件加载到数组中。这需要很长时间 我想知道是否有任何外部功能类似于数组,因为我可以知道数据的位置并直接获取它。而且它不需要重新加载所有内容 我对数据库了解不多,只是它们似乎没有按我需要的方式工作。它们不是有序的,总是需要搜索所有东西。似乎是这样。内存数据库中仍然存在这种可能性吗 如果有人有一个解决方案,听到它会很好

当我开发我的应用程序时,我需要一次又一次地做大量的数学运算,调整它,再次运行并观察结果

计算是在从大文件加载的数组上完成的。许多兆字节。不是很大,但问题是每次我运行脚本时,它首先必须将文件加载到数组中。这需要很长时间

我想知道是否有任何外部功能类似于数组,因为我可以知道数据的位置并直接获取它。而且它不需要重新加载所有内容

我对数据库了解不多,只是它们似乎没有按我需要的方式工作。它们不是有序的,总是需要搜索所有东西。似乎是这样。内存数据库中仍然存在这种可能性吗

如果有人有一个解决方案,听到它会很好

附带问题——难道不可能让用户输入我的ruby程序运行的脚本,这样我就可以让主ruby程序无限期地运行吗?我仍然不知道关于用户输入的选项以及如何工作。

使用:


您的操作系统将在保存和加载之间,甚至在使用数据的单独进程运行之间,将文件缓存起来。

尝试数据库修复,它通常是最快的选择,数据库按结构和索引的定义进行组织和排序,从无需安装的Sqlite开始,如果这不符合您的需要,您可以轻松升级,Catnapper的解决方案每次都需要将文件完全加载到阵列中,数据库不必作为您的问题,最好将其作为一个单独的问题,但首先搜索,我在数据库中看到过类似的问题,数据库设计用于快速随机访问记录。如果要按顺序检索数据,请告诉数据库要使用的顺序。此外,如果它看起来很慢,那么告诉它如何索引数据,它就会很快。如果您使用SQLite,内存中的存储很简单。查看Sequel gem文档的开头,了解做这件事有多容易。“你的操作系统将保持文件缓存”应该是“你的操作系统可能保持文件缓存”。操作系统的功能将根据可用磁盘缓存大小和机器上的活动量而有所不同。指望缓存中的数据,特别是在单独进程的两次运行之间,很可能会导致失望,除非这些数据是按顺序运行的,并且很少发生其他事情。编组只控制保存的数据的格式,但它没有任何控制缓存的魔力。@tin-man:正确。但是,这是一个很好的选择,因为数据集适合存储在内存中,而机器在其他方面没有做很多事情。对于程序员来说,这种方法简单易行,尤其是与数据库相比。如果对整个数据集进行迭代,并且该数据集适合内存,则数据库不会提供任何优势。让它尽可能简单,但不要简单,换句话说。
# save an array to a file
File.open('array', 'w') { |f| f.write Marshal.dump(my_array) }

# load an array from file
my_array = File.open('array', 'r') { |f| Marshal.load(f.read) }