何千ものファイル (50K) があり、各ファイルには約 10K 行あります。ファイルを読み込んで処理を行い、その行を出力ファイルに書き戻します。私の読み取りと処理ははるかに高速ですが、文字列イテレーターを単一の文字列に変換してファイルに書き込む最後のステップには長い時間がかかります (ほぼ 1 秒です。全体でこれを行うための計算は行いません)。ファイルの数は約 50K です)。これが、解析時間を改善する上でのボトルネックであることがわかります。
これは私のコードです。
var processedLines = linesFromGzip(new File(fileName)).map(line => MyFunction(line))
var outFile = Resource.fromFile(outFileName)
outFile.write(processedLines.mkString("\n")) // severe overhead caused by this line-> processedLines.mkString("\n")
(他のいくつかのフォーラム/ブログで、mkString が他のアプローチよりもはるかに優れていることを読みました。 (例)
mkString("\n") のより良い代替手段はありますか? ファイルの処理速度を向上させるまったく異なるアプローチはありますか。(覚えておいてください、私はそれぞれ10K行に近い50Kファイルを持っています)。