Skip to content

Performance: use FQN for functions which can use PHP7 compile time opcodes#784

Merged
wimg merged 1 commit intomasterfrom
feature/use-php7-opcache-when-available
Jan 13, 2019
Merged

Performance: use FQN for functions which can use PHP7 compile time opcodes#784
wimg merged 1 commit intomasterfrom
feature/use-php7-opcache-when-available

Conversation

@jrfnl
Copy link
Copy Markdown
Member

@jrfnl jrfnl commented Dec 31, 2018

Performance optimization along the same lines as #783

Functions in PHP are namespaced as well, however, when PHP cannot find the function in the namespace, it will fall through to the global namespace.

The step to first check within the namespace can be skipped by either using use func ... (PHP 5.6+) or by prefixing the function with a \.

While this offers a small performance gain as a general practice, using this for the special compiled functions should offer a noticeable performance gain when running PHPCompatibility on PHP 7+.
The special compiled function are replaced by opcodes at compile time, but only if it's clear at compile time that the global PHP native functions will be used.
For the list of functions, see: https://github.com/php/php-src/blob/f2db305fa4e9bd7d04d567822687ec714aedcdb5/Zend/zend_compile.c#L3872

This PR implements this throughout the codebase.

…codes

Functions in PHP are namespaced as well, however, when PHP cannot find the function in the namespace, it will fall through to the global namespace.

The step to first check within the namespace can be skipped by either using `use func ...` (PHP 5.6+) or by prefixing the function with a `\`.

While this offers a small performance gain as a general practice, using this for the special compiled functions should offer a noticeable performance gain when running PHPCompatibility on PHP 7+.
The special compiled function are replaced by opcodes at compile time, but only if it's clear at compile time that the global PHP native functions will be used.
For the list of functions, see: https://github.com/php/php-src/blob/f2db305fa4e9bd7d04d567822687ec714aedcdb5/Zend/zend_compile.c#L3872

This PR implements this throughout the codebase.
@jrfnl jrfnl added Type: chores/QA PR: quick merge PR only contains relatively simple changes PR: ready for review labels Dec 31, 2018
@jrfnl jrfnl added this to the 9.x Next milestone Dec 31, 2018
@wimg wimg merged commit cac8ef6 into master Jan 13, 2019
@wimg wimg deleted the feature/use-php7-opcache-when-available branch January 13, 2019 22:26
@jrfnl jrfnl removed the PR: quick merge PR only contains relatively simple changes label Sep 5, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants