file()を使用する場合とfgetcsv()を使用する場合で速度を比較した。
レコードは数値のみの想定。今回試したレコード数は10240件。
csvファイル
11.11,11.11
22.22,22.22
…
file()を使用した場合
かかった時間:0.0099518299102783
file()
$time_start = microtime(true);
$data = array();
$cnt = 0;
$lines = file('timetest.csv');
foreach($lines as $line){
$arr = explode(',' , $line);
$data[$cnt]['hoge'] = $arr[0];
$data[$cnt]['fuga'] = $arr[1];
$cnt++;
}
$time = microtime(true) - $time_start;
echo "{$time} 秒";
fgetcsv()を使用した場合
かかった時間:0.031763076782227
fgetcsv()
<?php
$time_start = microtime(true);
$data = array();
$cnt = 0;
$fp = fopen('timetest.csv', 'r');
while(($line = fgetcsv($fp)) !== FALSE){
$data[$cnt]['hoge'] = $line[0];
$data[$cnt]['fuga'] = $line[1];
$cnt++;
}
fclose($fp);
$time = microtime(true) - $time_start;
echo "{$time} 秒";
参考
- PHPでCSVファイルの読み込みを行う方法 : file() , fgetcsv()
https://uxmilk.jp/15018 - PHPの処理速度を計算
https://qiita.com/ao_love/items/a2d8b8566d0426195002