неправильная методика тестирования или парадокс

Alexandre

PHPПенсионер
неправильная методика тестирования или парадокс

1)Есть класс, который читает данные ( csv формат, 300 строк и 30 столбцов) из сокета и строит объект, в состав которого входит массив строк ( каждая строка это ассоциативный массив).
PHP:
$st= new StClass();
$st->getData();
2) Есть экстеншен, который делает тоже самое, только чтение осуществляется построчно
PHP:
$st = new StExt();
  while(   ($row = $st->getRow()) != false )  // наподобие mysql_fetch_assoc
     $res = $row;
$st->close();
$st=null;
парадокс состоит в том, что на 1000 итераций (консольный режим) парсинг данных класса быстрее (на 1 мс на одну итерацию), чем это делает экстеншен. время замерялось в начале цикла и конце цикла.

Хотелось бы услышать мнения в связи с чем это связанно. Само чтение из сокета на прямую в 100 раз быстрее, чем это делается на пхп, т.е. причина не в скорости отдачи информации.

Может учитывается расход ресурсов на каждый вызов функции (метода )$row = $st->getRow();
 

ONK

Пассивист PHPСluba
Alexandre, ты предлагаешь разложить пасьянс, или гадать на кофейной гуще? :)
 

fisher

накатила суть
а че калгринд и прочие инструменты уже отменили?
 

HraKK

Мудак
Команда форума
Я конечно извиняюсь но где тут ТЕОРИЯ? Чистая практика.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
У меня однажды была схожая ситуация - связана была 2 проблемами - для каждой порции данных в цикле выделялась память через системный вызов, из экстеншена вызывалась PHP-фенкция.
Переписал, стало работать раз в 10 быстрее.
 

Alexandre

PHPПенсионер
ты предлагаешь разложить пасьянс, или гадать на кофейной гуще?
сейчас моднее гадать по звездам...
калгринд и прочие инструменты уже отменили?
не знаю, к какому боку его приложить.
а какие прочие ?
Я конечно извиняюсь но где тут ТЕОРИЯ?
теоретически экстеншен должен работать быстрее.
 

whirlwind

TDD infected, paranoid
Alexandre 1 лишний вызов в php очень даже играет роль. Особенно, если это частовызываемый акцессор.
 
Сверху