быстрый способ найти значение min / max / avg в файле

У меня есть файл в формате

1 52 2 456 3 4516 5 4545 6 41 

каков был бы самый быстрый способ прочитать в файле и получить значение min / max / avg во втором столбце в PHP?

Solutions Collecting From Web of "быстрый способ найти значение min / max / avg в файле"

Что-то вроде следующего, где <filename> – путь к файлу.

 $file = fopen('<filename>', 'r'); $a = 0; $b = 0; $first = true; while (fscanf($file, '%d%d', $a, $b)) { if ($first) { $min = $b; $max = $b; $total = $b; $count = 1; $first = false; } else { $total += $b; if ($b < $min) $min = $b; if ($b > $max) $max = $b; $count++; } } $avg = $total / $count; 

Демо: http://ideone.com/rWbqm

Сделал некоторые улучшения производительности из кода @mellamokb:

 $file = fopen('<filename>', 'r'); $a = $b = 0; if (fscanf($file, '%d%d', $a, $b)) { $min = $max = $total = $b; $count = 1; while (fscanf($file, '%d%d', $a, $b)) { $total += $b; if ($b < $min) $min = $b; else if ($b > $max) $max = $b; ++$count; } $avg = $total / $count; } else { // Do something here as there is nothing in the file }