Самый быстрый способ чтения файла CSV

Я ищу очень быстрый метод чтения файла CSV. Моя структура данных выглядит так:

timestamp ,float     , string    ,ip          ,string
1318190061,1640851625, lore ipsum,84.169.42.48,appname

и я использую fgetcsv для чтения этих данных в массивы.

Проблема: производительность. На регулярной основе скрипт должен прочитать (и обработать) более 10 000 записей.

Моя первая попытка очень проста:

//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;
}
  1. Есть ли способ еще больше повысить производительность, или мой метод настолько быстр, насколько это возможно?
  2. Вероятно, более важно: есть ли любой способ определить, какие столбцы читаются, например иногда нужны только временные метки, столбцы с плавающей запятой. Есть ли лучший способ, чем мой путь (взгляните на мою вторую попытку :)

Спасибо :)

7
задан Nyoman 9 October 2011 в 21:01
поделиться