TDC SP 2015 - PHP7: melhor e mais rápido

Preview:

Citation preview

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