2016-07-25 93 views
0

Iam编写数据表生成器工具并存在一些性能问题 - 我需要关心RAM使用情况和生成时间。这是我的程序中的一个密钥Java:快速获取数据:存储在内存中与从文件中读取

1)I 需要存储最终数据在单个文件(一个文件=一个表中,当所有文件将被产生以后加载它),如:

111|aaaa|bbba 
112|aaab|bbbb 
113|aaac|bbbc 
114|aaad|bbbd... 

我所能有许多列,甚至数百万行。所有的值都是正确的。

2)现在,我需要使用先前生成的表中的值生成单个值到下一个表。我的程序也可以保存单个列到临时文件(在将来读它),如:

aaaa 
aaab 
aaac 
aaad... 

现在,主要问题是,我需要随机“读”新价值甚至畅想时代,与行计数器相同。

如何有效地做到这一点?哪些工具使用?我有两种选择:

  • 将临时文件中的所有第二列“可用值”存储在某个数组/列表列表中,并用于例如。获得(INT指数)方法和返回值
  • 从文件中读取和返回值的特定行

感谢您的帮助

+0

因为您需要随机读取内存数据库吗?磁盘读取/写入总是比内存读取/写入慢... –

+0

我知道速度较慢,但​​我也需要关心RAM。查看使用情况,如果我将数百万的值存储在array/arraylist中... – Shelboy

+0

速度或RAM使用率较低。挑一个,而不是两个。我不会向您推荐特定的解决方案。我建议你尝试各种可能的解决方案,用“现实”的数据对他们进行基准测试,然后做出决定。没有“一刀切”的解决方案。 –

回答

2

如何有效地做到这一点?

要随机读取文件,您需要知道每个记录的偏移量。我会存储这是一个二进制文件,每行的开始有一个4字节或8字节的偏移量。

您可以使用像Chronicle Map这样的库,它允许您通过密钥随机读取文件中的任何记录。

相关问题