tdc sp 2015 - php7: melhor e mais rápido

82
Melhor e mais rápido Bruno Ricardo Siqueira 2015

Upload: bruno-ricardo-siqueira

Post on 18-Aug-2015

194 views

Category:

Software


1 download

TRANSCRIPT

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

Melhor e mais rápido

Bruno Ricardo Siqueira

2015

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

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.

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

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

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

AQUECIMENTO

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

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

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

AQUECIMENTO - CONTEXTUALIZAÇÃO

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

AQUECIMENTO - CONTEXTUALIZAÇÃO

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

AQUECIMENTO - CONTEXTUALIZAÇÃO

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

AQUECIMENTO - CONTEXTUALIZAÇÃO

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

PHP7 BETA224/07

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

● PHP 4 constructors

● password_hash() option

AQUECIMENTO - DEPRECIAÇÕES

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

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

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

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

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

AQUECIMENTO - REMOÇÕES E REDUÇÃO DE INCONSISTÊNCIAS

● Uniform Variable Syntax

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

OLHANDO INTERNAMENTE

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

OLHANDO INTERNAMENTE - MEMÓRIA

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

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

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

Estruturas de dados menores.Menos alocações.Menos referenciação.

MAIS PERFORMANCE!

OLHANDO INTERNAMENTE - PERFORMANCE

Page 21: TDC SP 2015 - PHP7: melhor e mais rápido
Page 22: TDC SP 2015 - PHP7: melhor e mais rápido
Page 23: TDC SP 2015 - PHP7: melhor e mais rápido

100% demelhora no

desempenho

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

NOVIDADES

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

NOVIDADES - UNICODE

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

NOVIDADES - EXCEÇÕES

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

NOVIDADES - EXCEÇÕES

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

NOVIDADES - EXCEÇÕES

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

NOVIDADES - EXCEÇÕES

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

NOVIDADES - EXCEÇÕES

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

NOVIDADES - CLASSES ANÔNIMAS

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES spaceship operator <=>

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

NOVIDADES - OPERADORES null coalesce operator ??

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

NOVIDADES - OPERADORES null coalesce operator ??

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

NOVIDADES - OPERADORES null coalesce operator ??

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

NOVIDADES - OPERADORES null coalesce operator ??

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

NOVIDADES - DECLARAÇÕES scalar types

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

NOVIDADES - DECLARAÇÕES scalar types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES return types

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - DECLARAÇÕES group use

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS return expressions

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

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

NOVIDADES - GENERATORS delegating generator

return expressions + delegating generator…

Tá vendo a concorrência?

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

Lightweight Threads

FTW!

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

FUTURO PRÓXIMO & CONCLUSÕES

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

FUTURO PRÓXIMO

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

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

● ...

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

PERGUNTAS?

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

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