Top Banner
Better & faster Bruno Ricardo Siqueira 2015
82
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: TDC SP 2015 - PHP7: better & faster

Better & faster

Bruno Ricardo Siqueira

2015

Page 2: TDC SP 2015 - PHP7: better & faster

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.

Page 3: TDC SP 2015 - PHP7: better & faster

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

Page 4: TDC SP 2015 - PHP7: better & faster

WARMING-UP

Page 5: TDC SP 2015 - PHP7: better & faster

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

Page 6: TDC SP 2015 - PHP7: better & faster
Page 7: TDC SP 2015 - PHP7: better & faster

WARMING-UP - CONTEXTUALIZATION

Page 8: TDC SP 2015 - PHP7: better & faster

WARMING-UP - CONTEXTUALIZATION

Page 9: TDC SP 2015 - PHP7: better & faster

WARMING-UP - CONTEXTUALIZATION

Page 10: TDC SP 2015 - PHP7: better & faster

WARMING-UP - CONTEXTUALIZATION

Page 11: TDC SP 2015 - PHP7: better & faster

PHP7 BETA224/07

Page 12: TDC SP 2015 - PHP7: better & faster

● PHP 4 constructors

● password_hash() option

WARMING-UP - DEPRECATIONS

Page 13: TDC SP 2015 - PHP7: better & faster

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

Page 14: TDC SP 2015 - PHP7: better & faster

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

Page 15: TDC SP 2015 - PHP7: better & faster

WARMING-UP - REMOVALS & INCONSISTENCY REDUCTION

● Uniform Variable Syntax

Page 16: TDC SP 2015 - PHP7: better & faster

LOOKING INSIDE

Page 17: TDC SP 2015 - PHP7: better & faster
Page 18: TDC SP 2015 - PHP7: better & faster

LOOKING INSIDE - MEMORY

Page 19: TDC SP 2015 - PHP7: better & faster

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

Page 20: TDC SP 2015 - PHP7: better & faster

Smaller data structures.Less allocations.Less referencing.

BETTER PERFORMANCE!

LOOKING INSIDE - PERFORMANCE

Page 21: TDC SP 2015 - PHP7: better & faster
Page 22: TDC SP 2015 - PHP7: better & faster
Page 23: TDC SP 2015 - PHP7: better & faster

100% of performance improvement

in real world

applications

Page 24: TDC SP 2015 - PHP7: better & faster

NEW FEATURES

Page 25: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - UNICODE

Page 26: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - EXCEPTIONS IN THE CORE

Page 27: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - EXCEPTIONS IN THE CORE

Page 28: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - EXCEPTIONS IN THE CORE

Page 29: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - EXCEPTIONS IN THE CORE

Page 30: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - EXCEPTIONS IN THE CORE

Page 31: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - ANONYMOUS CLASSES

Page 32: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 33: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 34: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 35: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 36: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 37: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 38: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS spaceship operator <=>

Page 39: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS null coalesce operator ??

Page 40: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS null coalesce operator ??

Page 41: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS null coalesce operator ??

Page 42: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - OPERATORS null coalesce operator ??

Page 43: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS scalar types

Page 44: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS scalar types

Page 45: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 46: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 47: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 48: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 49: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 50: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 51: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 52: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 53: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 54: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS return types

Page 55: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 56: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 57: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 58: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 59: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 60: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - DECLARATIONS group use

Page 61: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 62: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 63: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 64: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 65: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 66: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 67: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS return expressions

Page 68: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 69: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 70: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 71: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 72: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 73: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 74: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

Page 75: TDC SP 2015 - PHP7: better & faster

NEW FEATURES - GENERATORS delegating generator

return expressions + delegating generator…

Can you see the concurrency?

Page 76: TDC SP 2015 - PHP7: better & faster

Lightweight Threads

FTW!

Page 77: TDC SP 2015 - PHP7: better & faster

NEAR FUTURE & CONCLUSIONS

Page 78: TDC SP 2015 - PHP7: better & faster

FUTURO PRÓXIMO

Page 79: TDC SP 2015 - PHP7: better & faster

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

● ...

Page 80: TDC SP 2015 - PHP7: better & faster
Page 81: TDC SP 2015 - PHP7: better & faster

QUESTIONS?

Page 82: TDC SP 2015 - PHP7: better & faster

THANKS FOR

BEINGHERE!

PHP7: better & faster

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

BRUNO RICARDO SIQUEIRA

@brunoric

https://joind.in/14853