> On Jul 5, 2024, at 1:11 PM, Claude Pache <[email protected]> wrote:
>> Le 25 juin 2024 à 16:36, Gina P. Banyard <[email protected]> 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