Я ищу очень быстрый способ чтения файла CSV.Моя структура данных выглядит следующим образом:
timestamp ,float , string ,ip ,string
1318190061,1640851625, lore ipsum,84.169.42.48,appname
, и я использую fgetcsv для чтения этих данных в массивы.
Проблема: производительность.Регулярно сценарий должен читать (и обрабатывать) более 10000 записей.
Моя первая попытка очень проста:
//Performance: 0,141 seconds / 13.5 MB
while(!feof($statisticsfile))
{
$temp = fgetcsv($statisticsfile);
$timestamp[] = $temp[0];
$value[] = $temp[1];
$text[] = $temp[2];
$ip[] = $temp[3];
$app[] = $temp[4];
}
Моя вторая попытка:
//Performance: 0,125 seconds / 10.8 MB
while (($userinfo = fgetcsv($statisticsfile)) !== FALSE) {
list ($timestamp[], $value[], $text, $ip, $app) = $userinfo;
}
- Есть ли способ еще больше повысить производительность, или мой метод настолько быстр, насколько это возможно?
- Возможно, важнее: есть ли способ определить, какие столбцы читаются, например, иногданужны только метки времени, плавающие столбцы.Есть ли лучший способ, чем мой путь (взгляните на мою вторую попытку:)
Спасибо:)