【发布时间】:2019-08-22 10:21:06
【问题描述】:
最近我想尽快在数组中搜索数值(整数、双精度数和指数表示法的数字)。
我最初使用 'is_numeric()',因为我们经常使用它作为我们的 goto 进行检查,但我想看看我是否可以更快地输入一些东西。
我注意到如果我转换为浮点数,那么只要值是数字 PHP 就会产生一个非零的值。因此,使用按位运算符,我可以在围绕搜索的 if 语句中执行逻辑非零。
if (~(~(float)$value)) {
// add to result array
}
在初始测试后,我发现使用中等大小的数字和非数字数组似乎可以加快 2 秒的速度。然而,这只不过是一个简单的单元测试。
有没有人有过将浮点数与 is_numeric 转换为性能的经验?我知道它们在功能上可能不是 100% 等效的(我认为强制转换为浮点数会转换为十六进制),但出于我的目的,我只会使用指数符号来转换整数、双精度数和数字。这是对 is_numeric() 的性能提升还是我想象到的?
【问题讨论】:
-
经过更多研究并在官方答案的帮助下,我意识到它们在功能上确实不等效。因此,性能提升可能是真实的,但代价是检查价值时不那么严格。可能只用于有保证的输入。
标签: php floating-point bitwise-operators