最初のポイントは、これらのコード サンプルのどちらもファイルを読み取らないということです。これは大袈裟で間違っているように聞こえるかもしれませんが、本当です。彼らが実際に行うことは、読み取りのためにファイルを開くことです。そして、それらが実際に何をするかという点では、おそらくそれぞれの効率に大きな違いはありません.
ファイルを実際に読み取る場合、使用する最適な方法は、ファイルの内容、インメモリ アルゴリズムのためにデータをどのような形式にする必要があるかなどによって異なりますScanner
。 raw Reader
、パフォーマンスの観点から、さらに重要なことには、コードの信頼性と保守性を高めるという観点から。
最後に、これがコードの全体的なパフォーマンスに大きな違いをもたらさない可能性があります。私が言いたいのは、アプリケーションを時期尚早に最適化しているということです。現時点ではパフォーマンスを無視して、コードの残りの部分をより単純にするバージョンを選択する方が賢明です。アプリケーションが動作しているときは、代表的な入力データを使用してプロファイリングします。プロファイリングは、ファイルの読み取りに費やされた時間を、絶対的に、アプリケーションの残りの部分と比較して示します。これにより、ファイルの読み取りを最適化する努力をする価値があるかどうかがわかります。
私が提供する唯一のパフォーマンスに関するアドバイスは、バッファリングされていない入力ストリームまたはリーダーからの文字単位の読み取りは非効率的であるということです。ファイルをそのように読み取る必要がある場合は、スタックに BufferedReader を追加する必要があります。