Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/391.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
有效存储市场数据价格值的Java(BigDecimal)_Java_Csv_Caching_Currency_Bigdecimal - Fatal编程技术网

有效存储市场数据价格值的Java(BigDecimal)

有效存储市场数据价格值的Java(BigDecimal),java,csv,caching,currency,bigdecimal,Java,Csv,Caching,Currency,Bigdecimal,我有以下建议: 20120201 000000;1.306600;1.306600;1.306560;1.306560;0 在哪里 行字段:日期时间戳;禁止公开投标报价;高标杆报价;酒吧 低报价;禁止闭标报价;卷 日期时间戳格式:YYYYMMDD HHMMSS 图例:YYYY–年MM–月(01至12)日–月日HH– 在这种情况下,一天中的小时数(24小时格式)MM–分钟SS–秒 一直都是00点 其欧元/美元市场数据(1分钟) 问题是:我需要将尽可能多的数据存储在java程序的内存中,这样我就不

我有以下建议:

20120201 000000;1.306600;1.306600;1.306560;1.306560;0
在哪里

行字段:日期时间戳;禁止公开投标报价;高标杆报价;酒吧 低报价;禁止闭标报价;卷

日期时间戳格式:YYYYMMDD HHMMSS

图例:YYYY–年MM–月(01至12)日–月日HH– 在这种情况下,一天中的小时数(24小时格式)MM–分钟SS–秒 一直都是00点

其欧元/美元市场数据(1分钟)

问题是:我需要将尽可能多的数据存储在java程序的内存中,这样我就不必在处理这些数据时不断地读取它们。最好将它们全部存储起来,因为我不在乎这会占用多少内存

我想我必须使用BigDecimal来保持洞察力(我必须对这些价格做一些算术)。我每行有3个BigDecimal。一个文件包含40万行,这是我必须创建的很多对象。可能有多个文件,相当于数百万个对象。此外,BigDecimal带来了开销

问题:在内存中存储此数据的最佳方式/数据结构/收集方式是什么?一次缓存固定数量100k?使用不同于BigDecimal的东西(我需要保持精度)?还是尽我所能把所有东西都装进去

如果有更好的方法,我也不想花费大量的计算时间来创建大量的BigDecimal对象。


我目前的想法是尽可能多地加载。当我必须将此代码移植到C#(要求)时,我担心会有很多缺点/以及问题。

一个大的十进制实例占用32个字节的内存。 一百万个大小数将是32000000字节。 也就是31250千字节,30.5兆字节 所以1000万将是305兆字节。 当接近1亿美元时,你需要3次演出。还是合理的

那么你的命运真的很重要吗

至于处理代码,我建议您将代码处理成块,并在继续下一块之前处理这些块

BufferedReader在这方面真的很有帮助,它将文件分块加载,边处理边处理

而且创建许多对象会被解释器优化,所以它实际上可能运行得非常快

只是一个例子

举个例子,我有一段代码,可以生成大于400 mb的json文件。稍后读取这些json文件只需30秒,同时会发生许多其他过程


这些json文件在处理过程中比csv文件更加数据/结构密集。所以我真的认为您不应该担心处理开销。

是什么让您认为“数百万对象”将成为一个问题?你的机器有多少内存?我会尝试先编写最简单的代码,然后测试性能,而不是假设它会有问题。@Jon Skeet我的机器有16GB,tbh我担心创建这些对象以及之后处理这么大的收集/数据结构会带来更多的开销。我认为您可能会正确地测试多种方法。我只是想知道在这方面是否有最佳实践或最优化/有效的方法。哦,这一点也不多。我可能会封装然后在另一个对象中的行进行更好的管理。我不知道用这个来解码JSON文件有多复杂。