SlideShare a Scribd company logo
1 of 17
Laruence
A BRIEF TO PHP 7.3
NEW FEATURES AND PERFORMANCE
PHP DEVELOPER
SELF INTRODUCTION
• Author of Yaf, Yar, Yac, Yaconf, Taint Projects
• Maintainer of Opcache, Msgpack Projects
• PHP core developer since 2011
• Zend consultant since 2013
• PHP7 core developer
• Chief software architect at Lianjia since 2015
A PROGRAMER
PHP HISTORY
• Created in 1994 by Rasmus Lerdorf
• 20+ years programming language
• Most popular web service program language
• PHP7 is released at 3 Dec 2015
• Latest version is PHP7.2.5
BORN FOR WEB
PHP
ASP.NET
Java
Static files
ColdFusion
Ruby
Perl
JavaScript
Python
Erlang
83.5%
13.4%
2.3%
1.9%
0.6%
0.6%
0.4%
0.4%
0.2%
0.1%
W3Techs.com,1 April 2018
HEREDOC AND NEWDOC
• The Ending token no loner needs to be the first strings of line
• The ending Token can be indented
• the Exact number of spaces/tabs used in the ending token will be striped
function example($arr) {
$out = "";
foreach($arr as $str) {
$out .= <<<DOC
repeat {$str}
DOC;
}
return $arr;
}
function example($arr) {
$out = "";
foreach($arr as $str) {
$out .= <<<DOC
repeat {$str}
DOC;
}
return $arr;
}
TRAILING COMMA IN FUNC CALLS
• Allow trailing comma in function and method calls
• Only one extra comma are allowed
• you can not use this in function/method declarations
func_call(
$argument1,
$argument2,
$argument3,
$argument4,
);
function func_call($num1, $num2, $num3, $num4) {
return $num1 + $num2 + $num3 + $mum4;
}
REFERENCE IN LIST
• Items in list can be assigned by reference
$animal = ['dog', 'cat'];
list($a, &$b) = $animal;
$b = "mokey";
var_dump($animal);
//output:
//array(2) {
// [0]=>
// string(3) "dog"
// [1]=>
// &string(5) "mokey"
//}
$animal = ['dog', 'cat'];
[$a, &$b] = $animal;
$b = "mokey";
var_dump($animal);
//output:
//array(2) {
// [0]=>
// string(3) "dog"
// [1]=>
// &string(5) "mokey"
//}
HRTIME
• Hrtime is a high-resolution monotonic timer
• it doesn’t depends on the system clock
$start = hrtime(true);
//...........
$end = hrtime(true);
$elapsed = $end - $start;
HRTIME
• Hrtime is a high-resolution monotonic timer
• it doesn’t depends on the system clock
$start = hrtime(true);
//...........
$end = hrtime(true);
$elapsed = $end - $start;
MULTIPLY NEW FEATURES & BUGFIX
• Add net_get_interfaces()
• instanceof now allows literals as the first operand
• NEW flag JSON_THROW_ON_ERROR, json_encode/decode could throw exception instead warning now
• Added is_countable() function, to check whether a value may be passed tocount()
• Multiply new methods added in GMP
• https://github.com/php/php-src/blob/master/UPGRADING
FASTER NEW GC
• Composer GC performance problem REsolved
• Multiple bugs fixed in the mean time
FASTER NEW GC
• Removed double link list, plain array instead
• Dynamically resize-able root buffers
• Dynamically GC threshold adjustment
• Reduced gc_buffer_root size from 32 to 8 (x86_64)
• 5x boost performance in tests
typedef struct _gc_root_buffer {
zend_refcounted *ref;
struct _gc_root_buffer *next;
struct _gc_root_buffer *prev;
uint32_t refcount;
} gc_root_buffer;
typedef struct _gc_root_buffer {
zend_refcounted *ref;
} gc_root_buffer;
SIMD OPTIMIZATION FRAMEWORK
• runtime cpu feature detection(sse, avx)
• zend_cpu_support_sse42
• CPU specific version runtime selection (ifunc/function pointer)
• addslashes
• 2x+ performance improved in test
BASE64 SIMD OPTIMIZATION
• base64_encode/decode optimized
• 3X performance improved in test (sse42)
• http://www.alfredklomp.com/programming/sse-base64/
$retry = 100;
$start = microtime(true);
while (--$retry) {
$length = (int)(1000/$retry);
$str = file_get_contents("/dev/urandom", false, NULL, 0, $length);
//echo "String lenght: ", $length, "n";
$time = microtime(true);
for ($i = 0; $i < 1000000; $i++) {
base64_encode($str);
}
$time = microtime(true) - $time;
//echo "Used time: ", $time , "s", "n";
}
echo "Total used time: ", microtime(true) - $start, "sn";
PERFORMANCE EVOLUTION
BENCH.PHP
13
7
5
4
3 3 3
1 1 1 1
0
3.5
7
10.5
14
17.5
PHP-5.0 PHP-5.1 PHP-5.2 PHP-5.3 PHP-5.4 PHP-5.5 PHP-5.6 PHP-7.0 PHP-7.1 PHP-7.2 PHP-7.3
WORDPRESS HOMEPAGE QPS
0 0
75 82
107 110 112
317 321
330
338
0
100
200
300
400
PHP-5.0 PHP-5.1 PHP-5.2 PHP-5.3 PHP-5.4 PHP-5.5 PHP-5.6 PHP-7.0 PHP-7.1 PHP-7.2 PHP-7.3
PERFORMANCE EVOLUTION
PHP 7.3 ROADMAP
• Jun 2018, Alpha1
• Jul 2018, Beta
• Aug 2018, RC
• Nov 2018, GA
P H P : K E E P G E T T I N G F A S T E R
THANKS

More Related Content

What's hot

Preparing code for Php 7 workshop
Preparing code for Php 7 workshopPreparing code for Php 7 workshop
Preparing code for Php 7 workshopDamien Seguy
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life CycleXinchen Hui
 
Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modulesneilbowers
 
PHP 5.6 New and Deprecated Features
PHP 5.6  New and Deprecated FeaturesPHP 5.6  New and Deprecated Features
PHP 5.6 New and Deprecated FeaturesMark Niebergall
 
Laravel Webcon 2015
Laravel Webcon 2015Laravel Webcon 2015
Laravel Webcon 2015Tim Bracken
 
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)daylerees
 
Php7 hhvm and co
Php7 hhvm and coPhp7 hhvm and co
Php7 hhvm and coPierre Joye
 
Php hypertext pre-processor
Php   hypertext pre-processorPhp   hypertext pre-processor
Php hypertext pre-processorSiddique Ibrahim
 
Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaMark Gardner
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?Ravi Raj
 
Speed geeking-lotusscript
Speed geeking-lotusscriptSpeed geeking-lotusscript
Speed geeking-lotusscriptBill Buchan
 
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)Roes Wibowo
 
Shootout! template engines on the jvm
Shootout! template engines on the jvmShootout! template engines on the jvm
Shootout! template engines on the jvmNLJUG
 

What's hot (20)

Preparing code for Php 7 workshop
Preparing code for Php 7 workshopPreparing code for Php 7 workshop
Preparing code for Php 7 workshop
 
CPAN Curation
CPAN CurationCPAN Curation
CPAN Curation
 
The Php Life Cycle
The Php Life CycleThe Php Life Cycle
The Php Life Cycle
 
Reviewing CPAN modules
Reviewing CPAN modulesReviewing CPAN modules
Reviewing CPAN modules
 
PHP 5.6 New and Deprecated Features
PHP 5.6  New and Deprecated FeaturesPHP 5.6  New and Deprecated Features
PHP 5.6 New and Deprecated Features
 
Laravel
LaravelLaravel
Laravel
 
Laravel Webcon 2015
Laravel Webcon 2015Laravel Webcon 2015
Laravel Webcon 2015
 
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
An Introduction to the Laravel Framework (AFUP Forum PHP 2014)
 
Php7 hhvm and co
Php7 hhvm and coPhp7 hhvm and co
Php7 hhvm and co
 
Php hypertext pre-processor
Php   hypertext pre-processorPhp   hypertext pre-processor
Php hypertext pre-processor
 
Creating Perl modules with Dist::Zilla
Creating Perl modules with Dist::ZillaCreating Perl modules with Dist::Zilla
Creating Perl modules with Dist::Zilla
 
How PHP Works ?
How PHP Works ?How PHP Works ?
How PHP Works ?
 
Hacking with hhvm
Hacking with hhvmHacking with hhvm
Hacking with hhvm
 
Speed geeking-lotusscript
Speed geeking-lotusscriptSpeed geeking-lotusscript
Speed geeking-lotusscript
 
Laravel Level 1 (The Basic)
Laravel Level 1 (The Basic)Laravel Level 1 (The Basic)
Laravel Level 1 (The Basic)
 
Intro to Laravel
Intro to LaravelIntro to Laravel
Intro to Laravel
 
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)
What's New in Laravel 5 (Laravel Meetup - 23th Apr 15, Yogyakarta, ID)
 
Shootout! template engines on the jvm
Shootout! template engines on the jvmShootout! template engines on the jvm
Shootout! template engines on the jvm
 
Laravel ppt
Laravel pptLaravel ppt
Laravel ppt
 
Laravel level 0 (introduction)
Laravel level 0 (introduction)Laravel level 0 (introduction)
Laravel level 0 (introduction)
 

Similar to A brief to PHP 7.3

これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)goccy
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3Damien Seguy
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9Ivan Krylov
 
Tech Days 2015: AdaCore Roadmap
Tech Days 2015: AdaCore RoadmapTech Days 2015: AdaCore Roadmap
Tech Days 2015: AdaCore RoadmapAdaCore
 
What is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTWhat is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTFramgia Vietnam
 
Php 5.6 vs Php 7 performance comparison
Php 5.6 vs Php 7 performance comparisonPhp 5.6 vs Php 7 performance comparison
Php 5.6 vs Php 7 performance comparisonTu Pham
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release reviewGiang Nguyễn
 
PHP 7X New Features
PHP 7X New FeaturesPHP 7X New Features
PHP 7X New FeaturesThanh Tai
 
Php 5.6 From the Inside Out
Php 5.6 From the Inside OutPhp 5.6 From the Inside Out
Php 5.6 From the Inside OutFerenc Kovács
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPStéphanie Roger
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworksKirk Madera
 
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...44CON
 
DevOps in PHP environment
DevOps in PHP environmentDevOps in PHP environment
DevOps in PHP environmentEvaldo Felipe
 
Building Your First Apache Apex Application
Building Your First Apache Apex ApplicationBuilding Your First Apache Apex Application
Building Your First Apache Apex ApplicationApache Apex
 

Similar to A brief to PHP 7.3 (20)

これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)これからのPerlプロダクトのかたち(YAPC::Asia 2013)
これからのPerlプロダクトのかたち(YAPC::Asia 2013)
 
Everything new with PHP 7.3
Everything new with PHP 7.3Everything new with PHP 7.3
Everything new with PHP 7.3
 
What to expect from Java 9
What to expect from Java 9What to expect from Java 9
What to expect from Java 9
 
Intro to CakePHP
Intro to CakePHPIntro to CakePHP
Intro to CakePHP
 
Modern PHP
Modern PHPModern PHP
Modern PHP
 
Tech Days 2015: AdaCore Roadmap
Tech Days 2015: AdaCore RoadmapTech Days 2015: AdaCore Roadmap
Tech Days 2015: AdaCore Roadmap
 
What is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNTWhat is new in PHP 5.5 - HuyenNT
What is new in PHP 5.5 - HuyenNT
 
Golang
GolangGolang
Golang
 
Golang
GolangGolang
Golang
 
Php 5.6 vs Php 7 performance comparison
Php 5.6 vs Php 7 performance comparisonPhp 5.6 vs Php 7 performance comparison
Php 5.6 vs Php 7 performance comparison
 
Eclipse pdt indigo release review
Eclipse pdt   indigo release reviewEclipse pdt   indigo release review
Eclipse pdt indigo release review
 
PHP 7X New Features
PHP 7X New FeaturesPHP 7X New Features
PHP 7X New Features
 
Wc13
Wc13Wc13
Wc13
 
Php 5.6 From the Inside Out
Php 5.6 From the Inside OutPhp 5.6 From the Inside Out
Php 5.6 From the Inside Out
 
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMPInria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
Inria Tech Talk : Comment améliorer la qualité de vos logiciels avec STAMP
 
They why behind php frameworks
They why behind php frameworksThey why behind php frameworks
They why behind php frameworks
 
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
44CON 2014 - Pentesting NoSQL DB's Using NoSQL Exploitation Framework, Franci...
 
DevOps in PHP environment
DevOps in PHP environmentDevOps in PHP environment
DevOps in PHP environment
 
Nginx pres
Nginx presNginx pres
Nginx pres
 
Building Your First Apache Apex Application
Building Your First Apache Apex ApplicationBuilding Your First Apache Apex Application
Building Your First Apache Apex Application
 

More from Xinchen Hui

PHP7 - For Its Best Performance
PHP7 - For Its Best PerformancePHP7 - For Its Best Performance
PHP7 - For Its Best PerformanceXinchen Hui
 
A History of PHP
A History of PHPA History of PHP
A History of PHPXinchen Hui
 
微博Lamp性能优化之路(2014)
微博Lamp性能优化之路(2014)微博Lamp性能优化之路(2014)
微博Lamp性能优化之路(2014)Xinchen Hui
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvementsXinchen Hui
 
Php 5.4 performance
Php 5.4 performancePhp 5.4 performance
Php 5.4 performanceXinchen Hui
 
China PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptChina PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptXinchen Hui
 

More from Xinchen Hui (7)

PHP7 - For Its Best Performance
PHP7 - For Its Best PerformancePHP7 - For Its Best Performance
PHP7 - For Its Best Performance
 
A History of PHP
A History of PHPA History of PHP
A History of PHP
 
微博Lamp性能优化之路(2014)
微博Lamp性能优化之路(2014)微博Lamp性能优化之路(2014)
微博Lamp性能优化之路(2014)
 
Weibo lamp improvements
Weibo lamp improvementsWeibo lamp improvements
Weibo lamp improvements
 
Php 5.4 performance
Php 5.4 performancePhp 5.4 performance
Php 5.4 performance
 
China PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 pptChina PHP Technology Summit 2011 ppt
China PHP Technology Summit 2011 ppt
 
Php performance
Php performancePhp performance
Php performance
 

Recently uploaded

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Patryk Bandurski
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Alan Dix
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machinePadma Pradeep
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksSoftradix Technologies
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxnull - The Open Security Community
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticscarlostorres15106
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersThousandEyes
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsMemoori
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxOnBoard
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptxLBM Solutions
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 

Recently uploaded (20)

Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
Integration and Automation in Practice: CI/CD in Mule Integration and Automat...
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...Swan(sea) Song – personal research during my six years at Swansea ... and bey...
Swan(sea) Song – personal research during my six years at Swansea ... and bey...
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Install Stable Diffusion in windows machine
Install Stable Diffusion in windows machineInstall Stable Diffusion in windows machine
Install Stable Diffusion in windows machine
 
Benefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other FrameworksBenefits Of Flutter Compared To Other Frameworks
Benefits Of Flutter Compared To Other Frameworks
 
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptxMaking_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
Making_way_through_DLL_hollowing_inspite_of_CFG_by_Debjeet Banerjee.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmaticsKotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
Kotlin Multiplatform & Compose Multiplatform - Starter kit for pragmatics
 
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for PartnersEnhancing Worker Digital Experience: A Hands-on Workshop for Partners
Enhancing Worker Digital Experience: A Hands-on Workshop for Partners
 
AI as an Interface for Commercial Buildings
AI as an Interface for Commercial BuildingsAI as an Interface for Commercial Buildings
AI as an Interface for Commercial Buildings
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 
Maximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptxMaximizing Board Effectiveness 2024 Webinar.pptx
Maximizing Board Effectiveness 2024 Webinar.pptx
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
Key Features Of Token Development (1).pptx
Key  Features Of Token  Development (1).pptxKey  Features Of Token  Development (1).pptx
Key Features Of Token Development (1).pptx
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 

A brief to PHP 7.3

  • 1. Laruence A BRIEF TO PHP 7.3 NEW FEATURES AND PERFORMANCE PHP DEVELOPER
  • 2. SELF INTRODUCTION • Author of Yaf, Yar, Yac, Yaconf, Taint Projects • Maintainer of Opcache, Msgpack Projects • PHP core developer since 2011 • Zend consultant since 2013 • PHP7 core developer • Chief software architect at Lianjia since 2015 A PROGRAMER
  • 3. PHP HISTORY • Created in 1994 by Rasmus Lerdorf • 20+ years programming language • Most popular web service program language • PHP7 is released at 3 Dec 2015 • Latest version is PHP7.2.5 BORN FOR WEB PHP ASP.NET Java Static files ColdFusion Ruby Perl JavaScript Python Erlang 83.5% 13.4% 2.3% 1.9% 0.6% 0.6% 0.4% 0.4% 0.2% 0.1% W3Techs.com,1 April 2018
  • 4. HEREDOC AND NEWDOC • The Ending token no loner needs to be the first strings of line • The ending Token can be indented • the Exact number of spaces/tabs used in the ending token will be striped function example($arr) { $out = ""; foreach($arr as $str) { $out .= <<<DOC repeat {$str} DOC; } return $arr; } function example($arr) { $out = ""; foreach($arr as $str) { $out .= <<<DOC repeat {$str} DOC; } return $arr; }
  • 5. TRAILING COMMA IN FUNC CALLS • Allow trailing comma in function and method calls • Only one extra comma are allowed • you can not use this in function/method declarations func_call( $argument1, $argument2, $argument3, $argument4, ); function func_call($num1, $num2, $num3, $num4) { return $num1 + $num2 + $num3 + $mum4; }
  • 6. REFERENCE IN LIST • Items in list can be assigned by reference $animal = ['dog', 'cat']; list($a, &$b) = $animal; $b = "mokey"; var_dump($animal); //output: //array(2) { // [0]=> // string(3) "dog" // [1]=> // &string(5) "mokey" //} $animal = ['dog', 'cat']; [$a, &$b] = $animal; $b = "mokey"; var_dump($animal); //output: //array(2) { // [0]=> // string(3) "dog" // [1]=> // &string(5) "mokey" //}
  • 7. HRTIME • Hrtime is a high-resolution monotonic timer • it doesn’t depends on the system clock $start = hrtime(true); //........... $end = hrtime(true); $elapsed = $end - $start;
  • 8. HRTIME • Hrtime is a high-resolution monotonic timer • it doesn’t depends on the system clock $start = hrtime(true); //........... $end = hrtime(true); $elapsed = $end - $start;
  • 9. MULTIPLY NEW FEATURES & BUGFIX • Add net_get_interfaces() • instanceof now allows literals as the first operand • NEW flag JSON_THROW_ON_ERROR, json_encode/decode could throw exception instead warning now • Added is_countable() function, to check whether a value may be passed tocount() • Multiply new methods added in GMP • https://github.com/php/php-src/blob/master/UPGRADING
  • 10. FASTER NEW GC • Composer GC performance problem REsolved • Multiple bugs fixed in the mean time
  • 11. FASTER NEW GC • Removed double link list, plain array instead • Dynamically resize-able root buffers • Dynamically GC threshold adjustment • Reduced gc_buffer_root size from 32 to 8 (x86_64) • 5x boost performance in tests typedef struct _gc_root_buffer { zend_refcounted *ref; struct _gc_root_buffer *next; struct _gc_root_buffer *prev; uint32_t refcount; } gc_root_buffer; typedef struct _gc_root_buffer { zend_refcounted *ref; } gc_root_buffer;
  • 12. SIMD OPTIMIZATION FRAMEWORK • runtime cpu feature detection(sse, avx) • zend_cpu_support_sse42 • CPU specific version runtime selection (ifunc/function pointer) • addslashes • 2x+ performance improved in test
  • 13. BASE64 SIMD OPTIMIZATION • base64_encode/decode optimized • 3X performance improved in test (sse42) • http://www.alfredklomp.com/programming/sse-base64/ $retry = 100; $start = microtime(true); while (--$retry) { $length = (int)(1000/$retry); $str = file_get_contents("/dev/urandom", false, NULL, 0, $length); //echo "String lenght: ", $length, "n"; $time = microtime(true); for ($i = 0; $i < 1000000; $i++) { base64_encode($str); } $time = microtime(true) - $time; //echo "Used time: ", $time , "s", "n"; } echo "Total used time: ", microtime(true) - $start, "sn";
  • 14. PERFORMANCE EVOLUTION BENCH.PHP 13 7 5 4 3 3 3 1 1 1 1 0 3.5 7 10.5 14 17.5 PHP-5.0 PHP-5.1 PHP-5.2 PHP-5.3 PHP-5.4 PHP-5.5 PHP-5.6 PHP-7.0 PHP-7.1 PHP-7.2 PHP-7.3
  • 15. WORDPRESS HOMEPAGE QPS 0 0 75 82 107 110 112 317 321 330 338 0 100 200 300 400 PHP-5.0 PHP-5.1 PHP-5.2 PHP-5.3 PHP-5.4 PHP-5.5 PHP-5.6 PHP-7.0 PHP-7.1 PHP-7.2 PHP-7.3 PERFORMANCE EVOLUTION
  • 16. PHP 7.3 ROADMAP • Jun 2018, Alpha1 • Jul 2018, Beta • Aug 2018, RC • Nov 2018, GA
  • 17. P H P : K E E P G E T T I N G F A S T E R THANKS