SYStem EXclusive

Я тут пешу - чего же боле…

AMFPHP vs Zend_Amf benchmark

Провёл праздники в жёстком дебаге:)
В том числе мимоходом потестировал сравнительную скорость Flex+AMFPHP и Flex+Zend_Amf.
Суть бенчмарка - последовательный вызов методов RemoteObject, с передачей параметров разного типа (integer, object, array, date etc) и последовательный вызов методов, возвращающих разные типы.  На  самом деле тест делался для других целей, но визульно сравнить скорость работы серверной стороны тоже стало интересно.
Тест относительный - то есть понятно, что в разных конфигурациях серверной машины, скорость ответа сервиса будет различна, но отношение результатов бенчмарков между собой - примерно одинаковым.

1. Результаты AMFPHP. При дёргании сервера - инициализируется AMFPHP, Zend_Loader, Zend_Db и прочие-некторые классы. В общем - bootstrap.
1. Результаты теста для AMFPHP 1.9.
Приблизительно 3.5 секунды на все вызовы сервиса. Ещё непонятно - много это или мало.

2. Результаты  Zend_Amf, включённого по “классической” схеме. При дёргании сервера - всё то же, что в предыдущем случае, только вместо AMFPHP - Zend_Amf.
2. Результаты  теста для Zend_Amf, включённого по
Приблизительно 4.2 секунды. Медленнее, чем AMFPHP, приблизительно на 15%.

3. Результаты  Zend_Amf, включённого по схеме, предложенной здесь. По моему разумению, это было бы замечательно - поддерживается хорошая архитектура приложения, где AMF gateway просто ещё один Action Controller. Инициализируются Zend MVC, Front Controller, в общем по обычной схеме приложения ZF.


Приблизительно 7.2 секунды. Никуда не годится!

Выводы такие сделал -
1. ZF - тормозная хрень (однако, справедивости ради - очень гибкая),  выбирать скорость разработки или скорость приложения нужно осторожно.
2. AMFPHP, и Zend_Amf - приблизительно равны по скорости, и, думаю, приблизились к своему пределу. Я имею ввиду, что принципиальных отличий в работе с AMF между этими библиотеками нет, а есть отличия архитектурные.  И отличия эти, как ни жаль, в пользу AMFPHP. А жаль потому, что библиотеку никто не поддерживает. Но тут, опять же, есть надежда, что  Zend_Amf будут развивать. AMFPHP опять-таки побыстрее будет, палюбому.
3. Использовать Zend_Amf в “классической” схеме ZF action controllers - не стОит, стОит ли вообще - решать вам.

Клиентская часть теста в работе.
Исходник клиентской части.
Исходник тестового сервиса.
Версии, использовавшиеся для бенчмарков - AMFPHP 1.9, Zend Framework 1.7.5

Комментарии (2) на “AMFPHP vs Zend_Amf benchmark”

  1. GolDen Says:

    А как на счет запуска ZF под Zend Opimizer?

  2. sysex Says:

    Да, вот совсем забыл написать. При тестах Zend Optimizer v3.3.3 was enabled.
    Но, по сути, я не думаю, что это как-то влияет на относительный результат, потому что он оптимизирует и AMFPHP тоже.

Leave a Reply