我有一个大的数据集(200GB未压缩,9GB压缩在bz2 -9中)的股票价格数据. 我想对它们进行一些基本的时间序列分析. 我的机器有16GB的RAM. 我更愿意: 将所有数据(压缩)保存在内存中 动态解压缩
我想对它们进行一些基本的时间序列分析.
我的机器有16GB的RAM.
我更愿意:
>将所有数据(压缩)保存在内存中
>动态解压缩该数据,并将其流式传输[所以没有任何东西碰到磁盘]
>在记忆中做所有分析
现在,我认为这里与Clojure的懒惰和未来的对象有很好的交互(即当我尝试访问它们时我可以定义对象,我会动态解压缩它们.)
问题:在Clojure中进行高性能时间序列分析时,我应该记住哪些事项?
我对涉及的技巧特别感兴趣:
>有效地将记录数据存储在内存中
>有效地进行计算
>奇怪的卷积减少数据传递次数
欢迎提供书籍/文章/研究论文建议. (我是CS博士生).
谢谢.
一些想法:>在存储压缩数据方面,我认为您不会比操作系统自己的文件系统缓存做得更好.只需确保它配置为使用11GB的RAM进行文件系统缓存,它应该将您的整个压缩数据集拉入内存,因为它是第一次读取.
>然后,您应该能够定义您的Clojure代码,以便通过ZipInputStream延迟拉入数据,这将为您执行解压缩.>如果需要对数据执行第二次传递,只需在同一文件上创建一个新的ZipInputStream.操作系统级缓存应确保您不再次访问磁盘.