フラットファイルに約800万行のデータを書き込むプログラムがあります。現在、プログラムはレコードごとにbufferedwriter.writeを呼び出しており、次の戦略で一括書き込みを計画していました。
- データ構造(私は配列を使用)を保持して、特定の数のレコードを保持します。
配列を使用してファイルに詳細を書き込みます。これがコードスニペットです(配列はレコードを格納する配列の名前であり、しきい値カウントは書き込みプロセスのキックオフです)
if (array.length==thresholdCount) { writeBulk(array); } public void writeBulk(String[] inpArray) { for (String line:inpArray) { if (line!=null) { try { writer.write(line +"\n"); } catch (IOException e) { e.printStackTrace(); } } } }
ただし、パフォーマンスの向上はあまり見られません。最適なしきい値カウントを決定する方法があるかどうか知りたいですか?また、コードをさらに調整して、配列内の各要素をn個のレコードの連結として格納し、バルクメソッドを呼び出すことも計画していました。たとえば、長さが5000の配列には、実際には50000レコードが含まれ、配列内の各インデックスには10レコードが含まれます。ただし、そうする前に、専門家の意見が必要です。