2. Objetivo
• Construir un verdadero framework de alto
rendimiento para PHP que sea fácil de usar
al mismo tiempo
• Facilitar y aumentar la escalabilidad de
proyectos en PHP sin aumentar la
complejidad
3. ¿Porqué?
• El uso de framework se ha convertido en
obligatorio para el desarrollo PHP
profesional
• Los frameworks ofrecen herramientas y
facilidades que hacen que nuestro trabajo
sea más divertido
4. ¿Cómo funciona PHP?
Revisar
que
el
programa
sea
correcto
a
nivel
sintácDco
(LINT)
APC,
Xcache,
eAccelerator
Construir
árbol
sintácDco
(consume
memoria)
Interpretar
(ejecutar)
el
árbol
construído
(bytecode)
(Zend
Engine)
5. Rendimiento en frameworks
tradicionales
• Muchos archivos con clases y funciones son
leídos en cada petición, la continua lectura de
disco puede impactar el rendimiento
• La totalidad del código proporcionada por
estos frameworks es interpretada en cada
petición
• El código de un framework permanece igual
entre una petición y otra, ¿porqué cargarlo e
interpretarlo una y otra vez?
6. ¿Cómo funcionan las
extensiones de C?
1. Las extensiones de C se cargan una sola
vez cuando inicia el servidor junto con PHP
2. La funcionalidad que provee las extensión
está lista para usar desde cualquier archivo
PHP
3. El código no se interpreta en las
extensiones, porque las extensiones están
compiladas para una plataforma específica
8. ¿Qué ofrece Phalcon?
• Es un framework por componentes y full stack
al tiempo, cualquier componente se puede
usar sin depender de otros o desarrollar una
aplicación completa con él
• Phalcon está directamente engranado con
PHP accediendo directamente a sus recursos
internos
• Generación de código, helpers, template
engine, scaffolding, etc.
9. ¿Cómo Phalcon es más rápido con respecto a
los frameworks tradicionales?
Frameworks Tradicionales Phalcon
Interpretación de cientos ó Sí No
miles de líneas en PHP
Cargar docenas de Sí No
archivos por petición
Revisar la existencia de Sí No
clases, funciones,
variables cada vez, en cada
petición
Realizar optimizaciones de No Sí
bajo nivel para ganar
rendimiento
10. Ayuda/Rendimiento
Poca
ayuda
al
programador
Alta
ayuda
al
programador
Alta
ayuda
al
programador
Rendimiento
Mayor
Rendimiento
Mayor
Rendimiento
Menor
14. ¿Qué se mide con un “Hola Mundo”?
Tiempo
que
tarda
en
iniciar
el
framework
Lógica
de
Aplicación
(Hello!)
Tiempo
que
tarda
en
finalizar
la
peDción
15. Entorno de Pruebas
• Sistema Operativo: Mac
OS
X
Lion
10.7.4
Servidor Web: Apache httpd 2.2.22
• PHP: 5.3.15 + APC 3.1.13 (Without Xdebug)
• CPU: 3.06 Ghz Intel Core 2 Duo
• Memoria Principal: 4GB
1333
MHz
DDR3
• Disco Duro: 500GB SCSI/SAS HDD
16. ab
–n
1000
–c
5
http://localhost/bench/phalcon/say/hello
17. [#]
ab
-‐n
1000
-‐c
5
http://localhost/bench/phalcon/?_url=say/hello
This
is
ApacheBench,
Version
2.3
<$Revision:
655654
$>
Copyright
1996
Adam
Twiss,
Zeus
Technology
Ltd,
http://www.zeustech.net/
Licensed
to
The
Apache
Software
Foundation,
http://www.apache.org/
Benchmarking
localhost
(be
patient)
Server
Software:
Apache/2.2.21
Server
Hostname:
localhost
Server
Port:
80
Document
Path:
/bench/phalcon/?_url=say/hello
Document
Length:
16
bytes
Concurrency
Level:
5
Time
taken
for
tests:
0.402
seconds
Complete
requests:
1000
Failed
requests:
0
Write
errors:
0
Total
transferred:
187000
bytes
HTML
transferred:
16000
bytes
Requests
per
second:
2489.26
[#/sec]
(mean)
Time
per
request:
2.009
[ms]
(mean)
Time
per
request:
0.402
[ms]
(mean,
across
all
concurrent
requests)
Transfer
rate:
454.58
[Kbytes/sec]
received
Connection
Times
(ms)
min
mean[+/-‐sd]
median
max
Connect:
0
0
0.3
0
4
Processing:
1
2
1.5
1
36
Waiting:
0
1
1.4
1
30
Total:
1
2
1.6
2
37
Percentage
of
the
requests
served
within
a
certain
time
(ms)
50%
2
66%
2
75%
2
80%
2
90%
3
95%
4
98%
5
99%
7
100%
37
(longest
request)