tdc sp 2015 - php7: better & faster

82
Better & faster Bruno Ricardo Siqueira 2015

Upload: bruno-ricardo-siqueira

Post on 18-Aug-2015

129 views

Category:

Software


1 download

TRANSCRIPT

Better & faster

Bruno Ricardo Siqueira

2015

ABOUT THE SPEAKER

Bruno Ricardo Siqueira.

Web developer and PHP evangelist in Brazil. Docker enthusiast. Git heavy user.

Working with Web Development for the last 8 years, Bachelor in Information Systems by University of Sao Paulo ICMC - USP, currently working at CI&T as Software Engineer.

AGENDA

● Warming-up

○ Contextualization

○ Deprecations

○ Removals &

inconsistency reduction

● Looking inside

○ Memory

○ Performance

● New features

○ Unicode

○ Exception in the core

○ Anonymous classes

○ Operators

○ Declarations

○ Generators

● Near future & conclusions

● Questions

WARMING-UP

WARMING-UP - CONTEXTUALIZATION

● 2009 - PHP 5.3

○ Namespaces

○ Anonymous functions

● 2009 - PHP-FIG

● 2010 - HipHop for PHP

(HPHPc)

○ PHP -> C++ binary

● 2011 - HipHop Virtual Machine

(HHVM)

○ JIT -> HipHop ByteCode

● 2012 - PHP 5.4

○ Traits

○ Built in Webserver

● 2013 - PHP 5.5

○ Generators

○ OpCache in the core

● 2014 - HACK Language

● 2014 - PHP 5.6

○ Variadic Functions (...)

○ reusable php://input

WARMING-UP - CONTEXTUALIZATION

WARMING-UP - CONTEXTUALIZATION

WARMING-UP - CONTEXTUALIZATION

WARMING-UP - CONTEXTUALIZATION

PHP7 BETA224/07

● PHP 4 constructors

● password_hash() option

WARMING-UP - DEPRECATIONS

WARMING-UP - REMOVALS & INCONSISTENCY REDUCTION

● date.timezone warning:

○ default value

● alternative tags:

○ <% opening tag○ <%= opening tag with echo○ %> closing tag○ (<script\s+language\s*=\s*(php|"php"|'php')\s*>)i

opening tag○ (</script>)i closing tag

● multiple default blocks in switch constructions

WARMING-UP - REMOVALS & INCONSISTENCY REDUCTION

● SAPIs & extensions:

○ 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

○ moved to PECL

● hexadecimals in numeric strings

● E_STRICT Notices

WARMING-UP - REMOVALS & INCONSISTENCY REDUCTION

● Uniform Variable Syntax

LOOKING INSIDE

LOOKING INSIDE - MEMORY

LOOKING INSIDE - PERFORMANCE

● ZVALs PHP 5.X

○ (almost) always heap

allocated

○ reference counted &

cycle colletcion

○ duplicated refcount

(objects)

○ too much referencing, e.

g.: 1 object in 1 variable ->

4 pointers

● ZVALs PHP 7

○ simple values (int, bool…)

without head allocation &

without refcount

○ no more double refcount.

○ reusable values

independent of zval

structure

Smaller data structures.Less allocations.Less referencing.

BETTER PERFORMANCE!

LOOKING INSIDE - PERFORMANCE

100% of performance improvement

in real world

applications

NEW FEATURES

NEW FEATURES - UNICODE

NEW FEATURES - EXCEPTIONS IN THE CORE

NEW FEATURES - EXCEPTIONS IN THE CORE

NEW FEATURES - EXCEPTIONS IN THE CORE

NEW FEATURES - EXCEPTIONS IN THE CORE

NEW FEATURES - EXCEPTIONS IN THE CORE

NEW FEATURES - ANONYMOUS CLASSES

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS spaceship operator <=>

NEW FEATURES - OPERATORS null coalesce operator ??

NEW FEATURES - OPERATORS null coalesce operator ??

NEW FEATURES - OPERATORS null coalesce operator ??

NEW FEATURES - OPERATORS null coalesce operator ??

NEW FEATURES - DECLARATIONS scalar types

NEW FEATURES - DECLARATIONS scalar types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS return types

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - DECLARATIONS group use

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS return expressions

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

NEW FEATURES - GENERATORS delegating generator

return expressions + delegating generator…

Can you see the concurrency?

Lightweight Threads

FTW!

NEAR FUTURE & CONCLUSIONS

FUTURO PRÓXIMO

FUTURO PRÓXIMO

● PSR7 + Middleware pattern will

boost even more the PHP

packages reusability

● JIT + PHP Virtual Machine

● Language specification

● Better consistency

● AST will bring new/better

static analysis tools

● ...

QUESTIONS?

THANKS FOR

BEINGHERE!

PHP7: better & faster

References: http://bit.ly/tdcsp-2015-php7

BRUNO RICARDO SIQUEIRA

@brunoric

https://joind.in/14853