PHP 中使用 (int) 进行类型转换时要比 intval 函数快6倍

在 PHP 中,进行类型转换一般可以使用 intval($var) 函数,或者使用强制类型转换函数 (int)$var 使用上这两个没有什么区别,唯一比较大的区别是 intval($var) 函数支持第二个参数 $base 转化所使用的进制,但是一般使用过程中,这个参数用的很少。

但是在性能上,这两种方法有非常大的差别,经过测试,在 PHP 中使用 (int)$var 进行类型转换时要比使用函数 intval($var) 大概快 3-6.5倍,下面是一个简单的测试:

# 输入 (int)$val intval($val) 比较
#0 42 0.068180 0.448819 658%
#1 -42 0.067972 0.448907 660%
#2 4.2 0.072348 0.450288 622%
#3 '42' 0.087305 0.469350 537%
#4 '+42' 0.087590 0.471153 537%
#5 '-42' 0.089154 0.469826 526%
#6 34 0.068234 0.451035 661%
#7 '042' 0.089344 0.470391 526%
#8 0x1A 0.072989 0.451909 619%
#9 '1e10' 0.088196 0.469347 532%
#10 26 0.068378 0.449884 657%
#11 42000000 0.068770 0.449416 653%
#12 2147483647 0.068927 0.448028 650%
#13 2147483648 0.072599 0.450618 620%
#14 4.2E+20 0.086305 0.467347 541%
#15 '420000000000000000000' 0.102120 0.484245 474%
#16 array() 0.092310 0.472185 511%
#17 array('foo','bar') 0.112644 0.494482 438%

PHP 的 intval(), strval(), floatval()boolval() 来自 PHP 4 年代的函数,PHP 5 之后的版本有了强制类型转换函数(比如(int) $var),经过上面测试,这些强制类型转换函数速度要快6倍。

所以 WordPress 5.6 把代码中的所有相关使用函数进行类型转换的代码都改成强制类型转换,据他们说一共改了 250 多个地方,哈哈。那我也改一下,WPJAM Basic 5.2 为了进一步提速,也会把所有使用到的类型转换函数,转换成强制类型转换。


©我爱水煮鱼,本站推荐使用的主机:阿里云,国外主机建议使用BlueHost

本站长期承接 WordPress 优化建站业务,请联系微信:「chenduopapa」。