tdc sp 2015 - php7: melhor e mais rápido
TRANSCRIPT
Melhor e mais rápido
Bruno Ricardo Siqueira
2015
O PALESTRANTE
Bruno Ricardo Siqueira.
Desenvolvedor web e evangelista PHP no Brasil. Entusiasta Docker. Apaixonado por Git.
Trabalhando com internet há 8 anos, Bacharel em Sistemas da Informação formado pelo ICMC - USP, trabalhando atualmente na empresa CI&T, desempenhando o papel de Engenheiro de Software.
AGENDA
● Aquecimento
○ Contextualização
○ Depreciações
○ Remoções e redução de
inconsistências
● Olhando internamente
○ Memória
○ Performance
● Novidades
○ Unicode
○ Exceções
○ Classes anônimas
○ Operadores
○ Declarações
○ Generators
● Futuro próximo & Conclusões
● Perguntas
AQUECIMENTO
AQUECIMENTO - CONTEXTUALIZAÇÃO
● 2009 - PHP 5.3
○ Namespaces
○ Funções anônimas
● 2009 - PHP-FIG
● 2010 - HipHop for PHP
(HPHPc)
○ PHP -> binário C++
● 2011 - HipHop Virtual Machine
(HHVM)
○ JIT -> HipHop ByteCode
● 2012 - PHP 5.4
○ Traits
○ Built in Webserver
● 2013 - PHP 5.5
○ Generators
○ OpCache no Core
● 2014 - HACK Language
● 2014 - PHP 5.6
○ Variadic Functions (...)
○ php://input reutilizável
AQUECIMENTO - CONTEXTUALIZAÇÃO
AQUECIMENTO - CONTEXTUALIZAÇÃO
AQUECIMENTO - CONTEXTUALIZAÇÃO
AQUECIMENTO - CONTEXTUALIZAÇÃO
PHP7 BETA224/07
● PHP 4 constructors
● password_hash() option
AQUECIMENTO - DEPRECIAÇÕES
AQUECIMENTO - REMOÇÕES E REDUÇÃO DE INCONSISTÊNCIAS
● date.timezone warning:
○ valor padrão
● tags alternativas:
○ <% opening tag○ <%= opening tag with echo○ %> closing tag○ (<script\s+language\s*=\s*(php|"php"|'php')\s*>)i
opening tag○ (</script>)i closing tag
● múltiplos blocos default em switches
AQUECIMENTO - REMOÇÕES E REDUÇÃO DE INCONSISTÊNCIAS
● SAPIs e extensões:
○ sapi/aolserver, sapi/apache, sapi/apache_hooks, sapi/apache2filter, sapi/caudium, sapi/continuity, sapi/isapi, sapi/milter, sapi/nsapi, sapi/phttpd, sapi/pi3web, sapi/roxen, sapi/thttpd, sapi/tux, sapi/webjames, ext/mssql, ext/mysql, ext/sybase_ct, ext/ereg
○ movidas para o PECL
● Remoção de hexadecimais em strings numéricas
● E_STRICT Notices
AQUECIMENTO - REMOÇÕES E REDUÇÃO DE INCONSISTÊNCIAS
● Uniform Variable Syntax
OLHANDO INTERNAMENTE
OLHANDO INTERNAMENTE - MEMÓRIA
OLHANDO INTERNAMENTE - PERFORMANCE
● ZVALs PHP 5.X
○ (quase) sempre alocados
na heap
○ reference counted &
cycle colletcion
○ dupla quantidade de
refcount (objetos)
○ muita referenciacão (ex.:
um objeto em uma
variável -> 4 ponteiros)
● ZVALs PHP 7
○ valores simples (int, bool…)
sem alocação na heap e
sem refcount
○ não existe mais double
refcount.
○ valores reutiáveis
independentemente da
zval structure
Estruturas de dados menores.Menos alocações.Menos referenciação.
MAIS PERFORMANCE!
OLHANDO INTERNAMENTE - PERFORMANCE
100% demelhora no
desempenho
NOVIDADES
NOVIDADES - UNICODE
NOVIDADES - EXCEÇÕES
NOVIDADES - EXCEÇÕES
NOVIDADES - EXCEÇÕES
NOVIDADES - EXCEÇÕES
NOVIDADES - EXCEÇÕES
NOVIDADES - CLASSES ANÔNIMAS
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES spaceship operator <=>
NOVIDADES - OPERADORES null coalesce operator ??
NOVIDADES - OPERADORES null coalesce operator ??
NOVIDADES - OPERADORES null coalesce operator ??
NOVIDADES - OPERADORES null coalesce operator ??
NOVIDADES - DECLARAÇÕES scalar types
NOVIDADES - DECLARAÇÕES scalar types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES return types
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - DECLARAÇÕES group use
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS return expressions
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
NOVIDADES - GENERATORS delegating generator
return expressions + delegating generator…
Tá vendo a concorrência?
Lightweight Threads
FTW!
FUTURO PRÓXIMO & CONCLUSÕES
FUTURO PRÓXIMO
FUTURO PRÓXIMO
● PSR7 + Middleware pattern irão
aumentar ainda mais a
reusabilidade
● Multi thread nativo
● JIT + PHP Virtual Machine
● Especificação da linguagem
● Mais consistência
● AST trará novas/melhores
ferramentas de análise estática
● ...
PERGUNTAS?
THANKS FOR
BEINGHERE!
PHP7: melhor e mais rápido
Referências: http://bit.ly/tdcsp-2015-php7
BRUNO RICARDO SIQUEIRA
@brunoric
https://joind.in/14853