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

2023-04-14 10:04:25 浏览数 (1)

在 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 为了进一步提速,也会把所有使用到的类型转换函数,转换成强制类型转换。

0 人点赞