timezone_transitions_get is very slow #2690
Closed
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
timezone_transitions_get is very slow, because php_format_date in add_nominal with the default value ZEND_LONG_MIN took very long to iterate from ZEND_LONG_MIN to ZEND_LONG_MAX on 64 bit systems. No transitions exists at this time before the timestamp -2147483648 (INT32_MIN).
With this patch:
Default Value
Duration: 0.000201
Timestamp for 1970-01-01 00:00:00
Duration: 0.000092
Timestamp for 0001-01-01 00:00:00
Duration: 0.000087
PHP 7.1.6:
Default Value
Duration: 0.045996
Timestamp for 1970-01-01 00:00:00
Duration: 0.000082
Timestamp for 0001-01-01 00:00:00
Duration: 0.000097
Benchmark
https://3v4l.org/MhkR8