分HOMEblogc#【C#】ファイル読み取り速度比較お久しぶりです、エンジニアのMasashiです。今回は、ファイルの内容を読み取る際の速度について検証を行ってみます。取得したいデータの形(文字列または配列等)を意識して使用する関数を変えているかと思います。下記では、データの形は気にせずにファイルの内容を読み取る際の速度に違いがあるのか検証を行ってみます。測定までの流れ今回測定を行うのは、ファイルに乱数を100,000行記載を行いファイルの内容を読み込むまでに要した時間になります。比較対象としてStreamReaderを使用して一括で読み込む場合と1行ずつ読み込む場合、FileクラスのReadAllText、ReadAllLinesを使用した場合の4つについてtxt形式とcsv形式それぞれで速度を検証しています。Enc);}}}ファイル読み込みの測定結果10回試行した結果の平均値が下記になっています。小数点第2位で四捨五入しています。11.8上記の結果を比較してみるとファイル形式の違いによる速度差については見られませんでした。次に使用している関数別にみてみると一番速い形は、File.ReadAllTextを使用したパターンになりました。StreamReader.ReadToEndと返り値の型や処理の流れは同一だと考えていましたが、txt形式・csv形式どちらでもFile.ReadAllTextを使用した方が速いため、速度差の原因がどこにあるのか調査してみたいと思います。StreamReader.ReadLineを使用して1行ずつ読み込むパターンは上記のパターンと比べると1行ずつ読み込む方法のため時間がかかる結果になりました。File.ReadAllLinesは返り値が文字列の配列形式であるため、配列形式に合わせて格納する時間が処理時間として出ていると考えられます。まとめファイル読み込みの速度では、File.ReadAllTextが一番速い結果となりました。結果を文字列形式で受け取れれば構わない場合は、File.ReadAllTextを使用することが一番いいと考えられます。File.ReadAllLinesに関しては時間を比較した場合遅いですが、結果を配列で返却してくれるため、データの加工が行いやすいメリットがあります。処理時間もそこまで大きな差ではないため、返り値の型に応じて使用する関数を柔軟に変えて問題ないと思います。この記事が少しでも皆さんのお役に立てば幸いです。AuthorエンジニアMasashiC#を用いた業務系アプリの製造に従事。