PHPでCSVファイルを読み込む際の速度比較

PHPでcsvファイルを読み込む際の選択肢として「fgetcsv」「str_getcsv」「SplFileObject」などの関数があります。それぞれの実行速度を比較したメモ書きです。

計測テストには「住所.jp」さんのcsvデータを使用しました。(約15万行,22MB)
目次

fgetcsv

「php csv」とかで検索するとたくさん出てくるのがコレ。

$time_start = microtime(true);

$file = fopen("zenkoku.csv", "r");

while (($line = fgetcsv($file)) !== false) {
  $array[] = $line;
}

fclose("zenkoku.csv");

$time = microtime(true) - $time_start;
echo $time . "秒";

結果:1.715秒

str_getcsv

PHPバージョン5.3.0以上でのみ使用可能
指定文字でパースすることができます。

$time_start = microtime(true);

$file = str_getcsv(file_get_contents("zenkoku.csv"), "\r\n");

foreach ($file as $line){
  $array[] = str_getcsv($line);
}

$time = microtime(true) - $time_start;

echo $time."秒";

結果:2.148秒

SplFileObject

ファイル読み込み用のオブジェクト指向インターフェイス

$time_start = microtime(true);

$file = new SplFileObject("zenkoku.csv");
$file->setFlags(SplFileObject::READ_CSV);

foreach ($file as $line) {
  $array[] = $line;
}

$time = microtime(true) - $time_start;

echo $time . "秒";

結果:1.385秒

まとめ

PHPでcsvファイルを読み込むなら「SplFileObject」がおすすめ

[参考]:【PHP】その CSV 変換、本当に「fgetcsv」でいいの?

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

ねことインターネットがすき

目次