簡體   English   中英

在Java中對CSV文件進行讀寫操作的代價是多少?

[英]how costly(Time) are read and write operations on csv file in java?

我正在寫一個包含讀寫操作的軟件。 我想知道這些操作在csv文件上的代價是多少。 還有其他消耗更少時間的文件格式嗎? 因為我必須在每個周期結束時對csv文件進行讀寫操作。

讀取和寫入操作取決於文件系統,硬件,軟件配置,內存,內存設置以及要讀取的文件大小。 但格式不對。 與此相關的另一個問題是解析文件的成本,因為csv非常簡單,所以解析文件的成本肯定必須相對較低。

關鍵是,CSV是數據表的好格式,但不適用於嵌套數據。 如果您的數據包含大量嵌套信息,則可以將其分成不同的csv文件,否則您將擁有一些信息冗余,從而降低性能。 但是其他格式可能具有其他類型的冗余。

並且不要優化過早。 如果您正在非常頻繁地從文件中讀取和寫入文件,則該文件一定會保留在RAM中。 JSON或壓縮文件可能會節省大小,並且讀取速度更快,但解析時間會更長,並且最終速度可能會更慢。 解析時間還取決於庫的實現(Gson vs Jackson)和版本。

很高興知道您的問題背后的原因,以便給出更好的答案。

讀/寫CSV文件的成本以及是否適合您的應用程序,取決於用例的詳細信息。 具體來說,如果您只是從文件的開頭讀取並在文件的末尾寫入,則CSV格式可能會正常工作。 但是,如果您需要訪問文件中間的特定記錄,則可能希望選擇其他格式。

CSV文件的主要問題在於,它不是隨機訪問的理想格式選擇,因為每個記錄(行)的大小都是可變的,因此您不能簡單地在文件中尋找特定的記錄偏移量,而需要讀取每行(嗯,您仍然可以跳轉和采樣,但是不能直接通過記錄偏移量進行搜索)。 具有固定大小記錄的其他格式將使您可以直接查找文件中的特定記錄,從而無需重新讀取和重寫整個文件就可以更新文件中間的條目。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM