2017-03-22 8 views
-4

非常に大きなファイルに保存されているデータの平均を計算するよう求めました。 Scannerでファイルを読んだり、行ごとに読んだり、グローバルなカウンタや平均を保ったりする以外の効果的な解決策は考えられませんでした。 インタビュアーは解決策に感銘を受けていませんJAVAで非常に大きなファイル(4GBと言う)を効率的に読み込むにはどのようにすればよいでしょうか?

+2

本当の解決策:気にしないで、読んでみると、JVMはそれを最も効率的な方法で処理します。そのため、「C」ではなくそのような言語を使用しています。 :-) – dognose

+1

カウントを保持する必要はなく、[移動平均](https://en.wikipedia.org/wiki/Moving_average)を計算するだけです。 – azurefrog

+1

@azurefrogもし私が間違っていたら私を訂正してください。移動平均の場合、処理されたポイントの総数とそのポイントまでの累積平均が必要です –

答えて

2

私はインタビュアーがファイルの大きなブロックを読み込んでメモリで処理する解決策を探していると思われます。 Javaでは、大きなブロックをbyte[]またはchar[]として読み取ってから、スキャナでメモリに処理するメカニズムがあります。これを達成する方法の詳細が必要かどうか尋ねます。

面接官が間違っていて、あなたが正しいと思う可能性があります。現代のO/SとJVMは、あなたがやっていることを読んで先読みすることにはかなり良いです。私はそれをテストしていませんが、読み込みを最適化しようとすると生産性が低下する可能性があります。

関連する問題