我有一个大型数据集(200GB未压缩,9GB压缩,bz2 -9)的股票价格数据。
我想对它们进行一些基本的时间序列分析。
我的机器有16GB的RAM。
我更愿意:
将所有数据压缩在内存中
动态解压缩该数据,并将其流式传输[因此没有任何内容可以访问磁盘]
在内存中进行所有分析
现在,我认为这里与Clojure的懒惰和未来的对象有很好的互动(即我可以在尝试访问它们时定义对象,我会动态解压缩它们。)
问题:在Clojure中进行高性能时间序列分析时,我应该记住哪些事项?
我特别感兴趣的是:
有效地将记录数据存储在内存中
有效地进行计算
减少数据传递次数的奇怪卷积
书籍/文章/研究论文建议表示欢迎。 (我是CS博士生。)
感谢。
答案 0 :(得分:3)
一些想法:
答案 1 :(得分:1)
我听说过用Java实现的系统。有可能的。您当然希望了解如何创建自己的延迟序列以实现此目的。如果你需要确保处理你想要处理的原始类型,我也会毫不犹豫地下载到Java中。例如Clojure不会生成用于在32位整数上进行数学运算的代码,它只会生成用于long的代码,如果你不想要它可能会很麻烦。
使内存格式与磁盘格式兼容也值得一些努力。这将为您提供内存映射文件的选项,或者(至少)使您的启动容易,如果您的程序崩溃。例如它可以只读取磁盘上的文件以恢复其先前的状态。