PHP 8.4 多字节字符串“暴力美学”:当 CPU 开始做翻译官 各位同学,大家好! 今天我们不聊那些虚头巴脑的框架设计模式,也不聊怎么把后端代码塞进 Docker 容器里。今天我们要聊的是一点“硬核”的——性能。 如果你是一个资深的 PHP 开发者,你一定对多字节字符串(MBString)既爱又恨。爱它是因为全世界都用 UTF-8,恨它是因为 PHP 处理中文、日文、韩文(CJK)这些变长编码时,慢得像是在用算盘算微积分。 PHP 8.4 做了一件大事:它把 PHP 核心里的多字节字符串处理从“外包”改成了“自营”,并且是用汇编级的手段进行了物理加速。这就像是你原本雇了个只会按脚的按摩师(libmbfl),结果现在直接把你换成了一个退役的奥运体操冠军(原生 SIMD 实现)。 今天,我们就来扒一扒,PHP 8.4 是如何在底层给多字节字符串开挂的。 第一部分:为什么 PHP 的多字节处理一直很“卡顿”? 在 PHP 8.4 之前,mb_ 系列函数其实是个“假货”。在底层,它主要依赖第三方库 libmbfl。这东西有多老呢?老到它甚至还得依赖另一个名为 libiconv 的东西来干苦 …