SlideShare a Scribd company logo
Pierre Joye PHP7, hhvm & co 
PHP 7, HHVM & CO 
Pierre Joye
Pierre Joye PHP7, hhvm & co 
Pierre Joye 
@pierrejoye 
pierre@php.net 
http://www.slideshare.net/pierrej 
PHP Core developer 
Contributors to numerous OSS projects 
Portability fan
Pierre Joye PHP7, hhvm & co 
Stats
Pierre Joye PHP7, hhvm & co 
What‘s going in the php world? 
https://wiki.php.net/rfc/isset_ternary
Pierre Joye PHP7, hhvm & co 
PHP 5.3 
2009 - 2014
Pierre Joye PHP7, hhvm & co 
PHP 5.4 
Security fixes only
Pierre Joye PHP7, hhvm & co 
PHP 5.6.0 is out! 
(btw, 5.6.1 too)
Pierre Joye PHP7, hhvm & co 
5 + 1 = 7
Pierre Joye PHP7, hhvm & co 
Roadmap
Pierre Joye PHP7, hhvm & co 
Features 
• Rewamped Engine 
• True 64bit support 
• Large string and LFS (Large file support) 
• Consistent variables syntax 
• No more fatal error on calling method on non 
object 
• New ?? operator 
• Many features under discussions
Pierre Joye PHP7, hhvm & co 
Recoverable error for non object
Pierre Joye PHP7, hhvm & co 
Recoverable error for non object 
<?php set_error_handler(function($code,$message) { 
var_dump($code, $message); 
}); 
$x= null; var_dump($x->method()); 
echo "Aliven"; 
https://wiki.php.net/rfc/catchable-call-to-member-of-non-object
Pierre Joye PHP7, hhvm & co 
Null Coalesce Operator (??)
Pierre Joye PHP7, hhvm & co 
Null Coalesce Operator (??) 
<?php 
$username = $_GET['user'] ?? 'nobody'; 
$username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; 
// Method/function call 
$model = Model::get($id) ?? $default_model; 
if (($model = Model::get($id)) === NULL) { $model = 
$default_model; } 
// Chained 
$x = NULL; $y = NULL; $z = 3; var_dump($x ?? $y ?? $z); 
https://wiki.php.net/rfc/isset_ternary
Pierre Joye PHP7, hhvm & co 
PHP Language Specification 
https://github.com/php/php-langspec
Pierre Joye PHP7, hhvm & co 
Open & Public Specifications 
Competions++
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co 
(Most) Focus on Speed
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co 
SPEED is NOT SCALE
Pierre Joye PHP7, hhvm & co 
SPEED is UX
Pierre Joye PHP7, hhvm & co 
Scale is Server Side 
Architecture (Apps, Ops, Net, …)
Pierre Joye PHP7, hhvm & co 
My code sucks.
Pierre Joye PHP7, hhvm & co 
Yours too.
Pierre Joye PHP7, hhvm & co 
Steroids++
Pierre Joye PHP7, hhvm & co 
So?
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co 
QB 
<?php 
class OilPaintFilter { 
/** @var int32 */ public $levels = 25; 
/** @var int32 */ public $filterSize = 5; 
/** * @engine qb 
* 
* @param image $dst 
* @param image $src 
* 
* @local float32[*][r,g,b,a] $bin 
* @local float32 $max_intensity 
* @local int32 $(current_index|max_index) 
* @local int32 $(filter_x|filter_y|filter_offset) 
* @local int32 $(x|y|x_limit|y_limit) 
* @local int32 $(width|height) 
* @local float32[r,g,b,a] $pixel 
* @local float32 $multiplier */ 
public function filter(&$dst, $src) {…
Pierre Joye PHP7, hhvm & co 
QB 
<?php 
function calc($n, &$a) { 
$b = 18; 
while($n) { 
$a = $b * $b * $b * $b; 
$n--; 
} 
} 
$n = 5000000; 
$a = 0; 
calc($n, $a); $end = microtime(true);
Pierre Joye PHP7, hhvm & co 
QB 
Source: http://php-qb.net/index.php/2-uncategorised/27-comparing-performance-in-qb-with-hhvm
Pierre Joye PHP7, hhvm & co 
Zephir
Pierre Joye PHP7, hhvm & co 
Zephir 
Optimization & code generation 
Compilation + optimization 
Native execution
Pierre Joye PHP7, hhvm & co 
Zephir 
namespace MyLibrary; 
class Filter { 
public function alpha(string str) { 
char ch; 
string filtered = ""; 
for ch in str { 
if (ch >= 'a' && ch <= 'z') || (ch >= 
'A' && ch <= 'Z') { 
let filtered .= ch; 
} 
} 
return filtered; 
} 
}
Pierre Joye PHP7, hhvm & co 
Zephir 
<?php 
$filter = new MyLibraryFilter(); 
echo $filter>alpha("01he#l.lo?/1");
Pierre Joye PHP7, hhvm & co 
PHP Alternative Implementations
Pierre Joye PHP7, hhvm & co 
PHP Alternative Implementations 
• PHP7 (formely known as phpng) 
• HHVM (native code) 
• Recki-ct (native code) 
• Phalanger (.net engine)
Pierre Joye PHP7, hhvm & co 
Recki-ct
Pierre Joye PHP7, hhvm & co 
Recki-CT 
PHP Cache 
Parser (AST in 7+) 
Recki IR 
JIT~ 
Native Code
Pierre Joye PHP7, hhvm & co 
Recki-ct 
php 5.5 Recki-CT hhvm 3.2 hippy-c qb 
simple() 139.63357 1.00000 8.30447 7.65693 8.35018 
simplecall() 38.99476 FAIL 1.32552 1.00000 FAIL 
simpleucall() 54.02041 1.00000 3.52439 1.51072 47.91090 
simpleudcall 
52.14534 1.00000 3.75936 1.41614 47.55259 
() 
mandel() 21.26249 1.00000 2.03372 2.11208 FAIL 
mandel_typ 
ed() 
23.16553 1.00000 2.11128 2.09212 3.00061 
mandel2() 24.43275 1.00000 2.57704 1.87802 FAIL 
mandel2_ty 
ped() 
23.79989 1.00000 2.90105 1.57193 7.11054
Pierre Joye PHP7, hhvm & co 
Recki-ct 
php 5.5 Recki-CT hhvm 3.2 hippy-c qb 
ary(50000) 1.39338 FAIL 1.00000 4.47888 FAIL 
ary2(50000) 1.26952 FAIL 1.00000 2.28231 FAIL 
ary3(2000) 5.96015 FAIL 1.70997 1.00000 FAIL 
fibo(30) 39.48440 1.00000 1.60647 16.40883 FAIL 
hash1(50000) 1.70014 FAIL 1.00000 3.27314 FAIL 
hash2(500) 2.23648 FAIL 1.00000 1.30044 FAIL 
heapsort(2000 
3.67800 FAIL 1.00000 4.96699 FAIL 
0)
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co 
HHVM 
PHP Cache 
Parser (AST in 7+) 
HHVM Opcodes 
Native Code 
Cache 
JIT ~
Pierre Joye PHP7, hhvm & co
Pierre Joye PHP7, hhvm & co 
PHP 
PHP Cache 
Parser (AST in 7+) 
OpCodes
Pierre Joye PHP7, hhvm & co 
Resources 
5.5 + opcache : 33.26 [#/sec] 
7 (October 2014) + opcache : 41.61 [#/sec] 
Hhvm (October 2014) : 57.74 [#/sec]
Pierre Joye PHP7, hhvm & co 
Resources 
• http://wiki.php.net/rfc/ 
• http://zephir-lang.com/ 
• http://www.slideshare.net/ircmaxell/high-performance- 
php-phpnw 
• https://github.com/google/recki-ct 
• http://blog.ircmaxell.com/2014/08/introducing-recki- 
ct.html 
• https://github.com/chung-leong/ 
qb/wiki/Introduction
Pierre Joye PHP7, hhvm & co 
Resources 
• https://wiki.php.net/rfc/phpng 
• https://wiki.php.net/rfc/abstract_syntax_tree 
• http://hhvm.com/blog/6323/the-journey-of-a- 
thousand-bytecodes
Pierre Joye PHP7, hhvm & co 
Resources 
• http://phpdbg.com/ 
• http://windows.php.net/qa/ 
• http://qa.php.net/

More Related Content

PPTX
Php7 hhvm and co
PPTX
Php7 HHVM and co
ODP
Php in 2013 (Web-5 2013 conference)
PDF
Key features PHP 5.3 - 5.6
ODP
PHP Tips for certification - OdW13
KEY
Zend Framework Study@Tokyo #2
ODP
PHP5.5 is Here
PDF
PHP7 - Scalar Type Hints & Return Types
Php7 hhvm and co
Php7 HHVM and co
Php in 2013 (Web-5 2013 conference)
Key features PHP 5.3 - 5.6
PHP Tips for certification - OdW13
Zend Framework Study@Tokyo #2
PHP5.5 is Here
PHP7 - Scalar Type Hints & Return Types

What's hot (20)

PDF
PHP7 is coming
PDF
Quick tour of PHP from inside
ODP
The why and how of moving to php 5.4
KEY
Kansai.pm 10周年記念 Plack/PSGI 入門
PDF
Debugging PHP with Xdebug - PHPUK 2018
PDF
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
PPTX
Zephir - A Wind of Change for writing PHP extensions
ODP
The why and how of moving to PHP 5.4/5.5
ODP
The why and how of moving to PHP 5.5/5.6
PDF
Profiling php5 to php7
PDF
Understanding PHP objects
KEY
Yapcasia2011 - Hello Embed Perl
PDF
How to deploy node to production
PDF
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
PDF
The new features of PHP 7
PDF
Mysqlnd, an unknown powerful PHP extension
PDF
I, For One, Welcome Our New Perl6 Overlords
ODP
Caching and tuning fun for high scalability @ FrOSCon 2011
KEY
Zend Framework Study@Tokyo vol1
PPTX
PHP 5.6 New and Deprecated Features
PHP7 is coming
Quick tour of PHP from inside
The why and how of moving to php 5.4
Kansai.pm 10周年記念 Plack/PSGI 入門
Debugging PHP with Xdebug - PHPUK 2018
Automatic PHP 7 Compatibility Checking Using php7cc (and PHPCompatibility)
Zephir - A Wind of Change for writing PHP extensions
The why and how of moving to PHP 5.4/5.5
The why and how of moving to PHP 5.5/5.6
Profiling php5 to php7
Understanding PHP objects
Yapcasia2011 - Hello Embed Perl
How to deploy node to production
Kicking off with Zend Expressive and Doctrine ORM (PHPNW2016)
The new features of PHP 7
Mysqlnd, an unknown powerful PHP extension
I, For One, Welcome Our New Perl6 Overlords
Caching and tuning fun for high scalability @ FrOSCon 2011
Zend Framework Study@Tokyo vol1
PHP 5.6 New and Deprecated Features
Ad

Viewers also liked (12)

PDF
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
PDF
잘 알려지지 않은 Php 코드 활용하기
PPTX
Basic of PHP
PDF
CloudFlare vs Incapsula: Round 2
PDF
PHP 5.3 and Lithium: the most rad php framework
PDF
CakePHP3ウォークスルー
PDF
安全なPHPアプリケーションの作り方2013
PDF
CloudFlare vs Incapsula vs ModSecurity
PPTX
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
PDF
PHP5.6からPHP7.0への移行
PPTX
PHP Powerpoint -- Teach PHP with this
ODP
PHP Web Programming
PHP Now and Then 2012 at PHP Conference 2012, Tokyo Japan (in japanese)
잘 알려지지 않은 Php 코드 활용하기
Basic of PHP
CloudFlare vs Incapsula: Round 2
PHP 5.3 and Lithium: the most rad php framework
CakePHP3ウォークスルー
安全なPHPアプリケーションの作り方2013
CloudFlare vs Incapsula vs ModSecurity
脆弱性は誰のせい? PHP、MySQL、Joomla! の責任やいかに
PHP5.6からPHP7.0への移行
PHP Powerpoint -- Teach PHP with this
PHP Web Programming
Ad

Similar to Php 7 hhvm and co (20)

PPTX
Php 7.x 8.0 and hhvm and
PDF
SymfonyCon 2017 php7 performances
PPTX
Peek at PHP 7
PPTX
PHP in 2018 - Q1 - AFUP Limoges
PDF
What's new with PHP7
PDF
Giới thiệu PHP 7
PPTX
New in php 7
PDF
What To Expect From PHP7
PPTX
PHP7 Presentation
PDF
HHVM and Hack: A quick introduction
PDF
PHP 7 performances from PHP 5
PDF
PHP 7 – What changed internally? (PHP Barcelona 2015)
PDF
Review unknown code with static analysis
PDF
Symfony live 2017_php7_performances
PDF
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
PDF
Php 7 compliance workshop singapore
PDF
Preparing code for Php 7 workshop
PDF
Preparing for the next PHP version (5.6)
PDF
PHP 7 – What changed internally? (Forum PHP 2015)
PDF
TDC SP 2015 - PHP7: better & faster
Php 7.x 8.0 and hhvm and
SymfonyCon 2017 php7 performances
Peek at PHP 7
PHP in 2018 - Q1 - AFUP Limoges
What's new with PHP7
Giới thiệu PHP 7
New in php 7
What To Expect From PHP7
PHP7 Presentation
HHVM and Hack: A quick introduction
PHP 7 performances from PHP 5
PHP 7 – What changed internally? (PHP Barcelona 2015)
Review unknown code with static analysis
Symfony live 2017_php7_performances
The new features of PHP 7 - Enrico Zimuel - Codemotion Milan 2016
Php 7 compliance workshop singapore
Preparing code for Php 7 workshop
Preparing for the next PHP version (5.6)
PHP 7 – What changed internally? (Forum PHP 2015)
TDC SP 2015 - PHP7: better & faster

More from Pierre Joye (16)

PPTX
Extending php (7), the basics
PPTX
Php core. get rid of bugs and contribute
PPTX
Webdevcon Keynote hh-2012-09-18
PPTX
Devcon hh-2012
PPTX
Short Intro talk to IPC/Berlin 2012
PPTX
Intro ipcberlin2012
PPTX
Webdevcon pierrejoye-php54-and-other
PPTX
Php symfony and software lifecycle
PPTX
Mongodb - drupal dev days
PPTX
Webplatform And Php
PPTX
Keynote, PHP World Kongress Munich
PPTX
Php On Windows
PPTX
Php On Windows Internals
PPTX
Test Fest 2009
PPT
PHP Worl Kongress Munich
PPT
Developing PHP internals on Windows
Extending php (7), the basics
Php core. get rid of bugs and contribute
Webdevcon Keynote hh-2012-09-18
Devcon hh-2012
Short Intro talk to IPC/Berlin 2012
Intro ipcberlin2012
Webdevcon pierrejoye-php54-and-other
Php symfony and software lifecycle
Mongodb - drupal dev days
Webplatform And Php
Keynote, PHP World Kongress Munich
Php On Windows
Php On Windows Internals
Test Fest 2009
PHP Worl Kongress Munich
Developing PHP internals on Windows

Recently uploaded (20)

PDF
NewMind AI Weekly Chronicles - August'25-Week II
PPT
“AI and Expert System Decision Support & Business Intelligence Systems”
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
1. Introduction to Computer Programming.pptx
PPTX
Big Data Technologies - Introduction.pptx
PPTX
Digital-Transformation-Roadmap-for-Companies.pptx
PDF
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
PPTX
Spectroscopy.pptx food analysis technology
PDF
Accuracy of neural networks in brain wave diagnosis of schizophrenia
PPTX
Group 1 Presentation -Planning and Decision Making .pptx
PDF
Assigned Numbers - 2025 - Bluetooth® Document
PDF
Machine learning based COVID-19 study performance prediction
PDF
Dropbox Q2 2025 Financial Results & Investor Presentation
PPTX
SOPHOS-XG Firewall Administrator PPT.pptx
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Advanced methodologies resolving dimensionality complications for autism neur...
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PDF
Reach Out and Touch Someone: Haptics and Empathic Computing
PDF
Getting Started with Data Integration: FME Form 101
NewMind AI Weekly Chronicles - August'25-Week II
“AI and Expert System Decision Support & Business Intelligence Systems”
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
1. Introduction to Computer Programming.pptx
Big Data Technologies - Introduction.pptx
Digital-Transformation-Roadmap-for-Companies.pptx
TokAI - TikTok AI Agent : The First AI Application That Analyzes 10,000+ Vira...
Spectroscopy.pptx food analysis technology
Accuracy of neural networks in brain wave diagnosis of schizophrenia
Group 1 Presentation -Planning and Decision Making .pptx
Assigned Numbers - 2025 - Bluetooth® Document
Machine learning based COVID-19 study performance prediction
Dropbox Q2 2025 Financial Results & Investor Presentation
SOPHOS-XG Firewall Administrator PPT.pptx
Spectral efficient network and resource selection model in 5G networks
Advanced methodologies resolving dimensionality complications for autism neur...
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
20250228 LYD VKU AI Blended-Learning.pptx
Reach Out and Touch Someone: Haptics and Empathic Computing
Getting Started with Data Integration: FME Form 101

Php 7 hhvm and co

  • 1. Pierre Joye PHP7, hhvm & co PHP 7, HHVM & CO Pierre Joye
  • 2. Pierre Joye PHP7, hhvm & co Pierre Joye @pierrejoye [email protected] http://www.slideshare.net/pierrej PHP Core developer Contributors to numerous OSS projects Portability fan
  • 3. Pierre Joye PHP7, hhvm & co Stats
  • 4. Pierre Joye PHP7, hhvm & co What‘s going in the php world? https://wiki.php.net/rfc/isset_ternary
  • 5. Pierre Joye PHP7, hhvm & co PHP 5.3 2009 - 2014
  • 6. Pierre Joye PHP7, hhvm & co PHP 5.4 Security fixes only
  • 7. Pierre Joye PHP7, hhvm & co PHP 5.6.0 is out! (btw, 5.6.1 too)
  • 8. Pierre Joye PHP7, hhvm & co 5 + 1 = 7
  • 9. Pierre Joye PHP7, hhvm & co Roadmap
  • 10. Pierre Joye PHP7, hhvm & co Features • Rewamped Engine • True 64bit support • Large string and LFS (Large file support) • Consistent variables syntax • No more fatal error on calling method on non object • New ?? operator • Many features under discussions
  • 11. Pierre Joye PHP7, hhvm & co Recoverable error for non object
  • 12. Pierre Joye PHP7, hhvm & co Recoverable error for non object <?php set_error_handler(function($code,$message) { var_dump($code, $message); }); $x= null; var_dump($x->method()); echo "Aliven"; https://wiki.php.net/rfc/catchable-call-to-member-of-non-object
  • 13. Pierre Joye PHP7, hhvm & co Null Coalesce Operator (??)
  • 14. Pierre Joye PHP7, hhvm & co Null Coalesce Operator (??) <?php $username = $_GET['user'] ?? 'nobody'; $username = isset($_GET['user']) ? $_GET['user'] : 'nobody'; // Method/function call $model = Model::get($id) ?? $default_model; if (($model = Model::get($id)) === NULL) { $model = $default_model; } // Chained $x = NULL; $y = NULL; $z = 3; var_dump($x ?? $y ?? $z); https://wiki.php.net/rfc/isset_ternary
  • 15. Pierre Joye PHP7, hhvm & co PHP Language Specification https://github.com/php/php-langspec
  • 16. Pierre Joye PHP7, hhvm & co Open & Public Specifications Competions++
  • 17. Pierre Joye PHP7, hhvm & co
  • 18. Pierre Joye PHP7, hhvm & co
  • 19. Pierre Joye PHP7, hhvm & co (Most) Focus on Speed
  • 20. Pierre Joye PHP7, hhvm & co
  • 21. Pierre Joye PHP7, hhvm & co SPEED is NOT SCALE
  • 22. Pierre Joye PHP7, hhvm & co SPEED is UX
  • 23. Pierre Joye PHP7, hhvm & co Scale is Server Side Architecture (Apps, Ops, Net, …)
  • 24. Pierre Joye PHP7, hhvm & co My code sucks.
  • 25. Pierre Joye PHP7, hhvm & co Yours too.
  • 26. Pierre Joye PHP7, hhvm & co Steroids++
  • 27. Pierre Joye PHP7, hhvm & co So?
  • 28. Pierre Joye PHP7, hhvm & co
  • 29. Pierre Joye PHP7, hhvm & co
  • 30. Pierre Joye PHP7, hhvm & co QB <?php class OilPaintFilter { /** @var int32 */ public $levels = 25; /** @var int32 */ public $filterSize = 5; /** * @engine qb * * @param image $dst * @param image $src * * @local float32[*][r,g,b,a] $bin * @local float32 $max_intensity * @local int32 $(current_index|max_index) * @local int32 $(filter_x|filter_y|filter_offset) * @local int32 $(x|y|x_limit|y_limit) * @local int32 $(width|height) * @local float32[r,g,b,a] $pixel * @local float32 $multiplier */ public function filter(&$dst, $src) {…
  • 31. Pierre Joye PHP7, hhvm & co QB <?php function calc($n, &$a) { $b = 18; while($n) { $a = $b * $b * $b * $b; $n--; } } $n = 5000000; $a = 0; calc($n, $a); $end = microtime(true);
  • 32. Pierre Joye PHP7, hhvm & co QB Source: http://php-qb.net/index.php/2-uncategorised/27-comparing-performance-in-qb-with-hhvm
  • 33. Pierre Joye PHP7, hhvm & co Zephir
  • 34. Pierre Joye PHP7, hhvm & co Zephir Optimization & code generation Compilation + optimization Native execution
  • 35. Pierre Joye PHP7, hhvm & co Zephir namespace MyLibrary; class Filter { public function alpha(string str) { char ch; string filtered = ""; for ch in str { if (ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') { let filtered .= ch; } } return filtered; } }
  • 36. Pierre Joye PHP7, hhvm & co Zephir <?php $filter = new MyLibraryFilter(); echo $filter>alpha("01he#l.lo?/1");
  • 37. Pierre Joye PHP7, hhvm & co PHP Alternative Implementations
  • 38. Pierre Joye PHP7, hhvm & co PHP Alternative Implementations • PHP7 (formely known as phpng) • HHVM (native code) • Recki-ct (native code) • Phalanger (.net engine)
  • 39. Pierre Joye PHP7, hhvm & co Recki-ct
  • 40. Pierre Joye PHP7, hhvm & co Recki-CT PHP Cache Parser (AST in 7+) Recki IR JIT~ Native Code
  • 41. Pierre Joye PHP7, hhvm & co Recki-ct php 5.5 Recki-CT hhvm 3.2 hippy-c qb simple() 139.63357 1.00000 8.30447 7.65693 8.35018 simplecall() 38.99476 FAIL 1.32552 1.00000 FAIL simpleucall() 54.02041 1.00000 3.52439 1.51072 47.91090 simpleudcall 52.14534 1.00000 3.75936 1.41614 47.55259 () mandel() 21.26249 1.00000 2.03372 2.11208 FAIL mandel_typ ed() 23.16553 1.00000 2.11128 2.09212 3.00061 mandel2() 24.43275 1.00000 2.57704 1.87802 FAIL mandel2_ty ped() 23.79989 1.00000 2.90105 1.57193 7.11054
  • 42. Pierre Joye PHP7, hhvm & co Recki-ct php 5.5 Recki-CT hhvm 3.2 hippy-c qb ary(50000) 1.39338 FAIL 1.00000 4.47888 FAIL ary2(50000) 1.26952 FAIL 1.00000 2.28231 FAIL ary3(2000) 5.96015 FAIL 1.70997 1.00000 FAIL fibo(30) 39.48440 1.00000 1.60647 16.40883 FAIL hash1(50000) 1.70014 FAIL 1.00000 3.27314 FAIL hash2(500) 2.23648 FAIL 1.00000 1.30044 FAIL heapsort(2000 3.67800 FAIL 1.00000 4.96699 FAIL 0)
  • 43. Pierre Joye PHP7, hhvm & co
  • 44. Pierre Joye PHP7, hhvm & co HHVM PHP Cache Parser (AST in 7+) HHVM Opcodes Native Code Cache JIT ~
  • 45. Pierre Joye PHP7, hhvm & co
  • 46. Pierre Joye PHP7, hhvm & co PHP PHP Cache Parser (AST in 7+) OpCodes
  • 47. Pierre Joye PHP7, hhvm & co Resources 5.5 + opcache : 33.26 [#/sec] 7 (October 2014) + opcache : 41.61 [#/sec] Hhvm (October 2014) : 57.74 [#/sec]
  • 48. Pierre Joye PHP7, hhvm & co Resources • http://wiki.php.net/rfc/ • http://zephir-lang.com/ • http://www.slideshare.net/ircmaxell/high-performance- php-phpnw • https://github.com/google/recki-ct • http://blog.ircmaxell.com/2014/08/introducing-recki- ct.html • https://github.com/chung-leong/ qb/wiki/Introduction
  • 49. Pierre Joye PHP7, hhvm & co Resources • https://wiki.php.net/rfc/phpng • https://wiki.php.net/rfc/abstract_syntax_tree • http://hhvm.com/blog/6323/the-journey-of-a- thousand-bytecodes
  • 50. Pierre Joye PHP7, hhvm & co Resources • http://phpdbg.com/ • http://windows.php.net/qa/ • http://qa.php.net/

Editor's Notes

  • #10: Fall 2015 Stabilization RFCs in discussions More optimizatons coming
  • #12: Fall 2015 Stabilization RFCs in discussions More optimizatons coming
  • #14: Fall 2015 Stabilization RFCs in discussions More optimizatons coming
  • #21: Yes but…. Speed is not scale Most of you have no scaling problem Your code simply sucks (mines too) Changing languages, servers, platforms do not fix scale issues Fix your code, design and architecture Fast PHP is about scale, not speed.
  • #26: Except Lars‘
  • #28: Except Lars‘
  • #33: Function calls poorly implemented