2016-07-25 124 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這樣的庫,它允許您通過密鑰隨機讀取文件中的任何記錄。

相關問題