PHP 里实现『是否由某个字符串开头』最快的方式

最近在做开源项目 php-m3u8 的时候,为了提高解析 m3u8 文件内容的速度,需要实现『字符串是否是另外某个字符串的开头』的需求。不过在 PHP 里实现这个需求可以实现的方法实在是太多了,所以我这里做了一个测试,列出各种实现方式的速度数据,以供参考。

测试结果大家可以自行测试,总之结果是令我感到意外的。我觉得这个需求用 strncmp 来做,理论上应该是最快的,结果 strncmp 居然输给了 strpos,而 substr 和 strstr 也没 strpos 快也是挺意外……正则是 PHP 内置函数实现 startsWith 的最后一名,所以从性能考虑如果可以用别的方式代替正则,就尽量别用正则。

最后自己写的函数…… 实在惨不忍睹,所以能用 PHP 内置的函数就请尽量用吧。

所消耗时间排名:strpos ~= strrpos < substr < strstr < strncmp < preg_match < 自己实现的函数

wx pay

CC BY-NC-ND 4.0 PHP 里实现『是否由某个字符串开头』最快的方式 by Chrisyue's Blog is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.

发表评论

电子邮件地址不会被公开。

CAPTCHA
Change the CAPTCHA codeSpeak the CAPTCHA code