Re: [RFC] Deprecations for PHP 8.4
| From: | Mike Schinkel | Date: | Sat, 06 Jul 2024 01:22:20 +0000 |
| Subject: | Re: [RFC] Deprecations for PHP 8.4 | ||
| References: | 1 2 | Groups: | php.internals |
| Request: | Send a blank email to internals+get-124238@lists.php.net to get a copy of this message | ||
> On Jul 5, 2024, at 1:11 PM, Claude Pache <claude.pache@gmail.com> wrote:
>> Le 25 juin 2024 à 16:36, Gina P. Banyard <internals@gpb.moe> a écrit :
>> https://wiki.php.net/rfc/deprecations_php_8_4
>
>
> * About strtok(): An exact replacement of
strtok() that is
> reasonably performant may be constructed with a sequence of strspn(...) and strcspn(...) calls; here
> is an implementation using a generator in order to keep the state:
> https://3v4l.org/926tC
> <https://3v4l.org/926tC>
Well your modern_strtok() function is not an _exact_ replacement as it requires using a generator
and thus forces the restructure of the code that calls strtok().
So not a drop-in — search-and-replace — replacement for strtok(). But it is a reasonable
replacement for those who are motivated to do the restructure.
========
Just out a curiosity for the performance of your modern_strtok() function so I benchmarked it and
found it takes — on rough average — about ~2.5 times as long to run compared to when using
strtok():
https://3v4l.org/AMECf#v8.3.9 <https://3v4l.org/AMECf#v8.3.9>
That makes yours the fastest alternative I have benchmarked, but significantly still slower than
strtok().
I was curious to see if I could improve its performance by avoiding the generator, but that just
made it slightly worse, e.g. taking — on rough average — ~2.75 times as long to run as
strtok():
https://3v4l.org/ZVS5Md#v8.3.9 <https://3v4l.org/ZVS5Md#v8.3.9>
#fwiw
-Mike