类型提示是否有助于PHP脚本的性能?

时间:2010-08-27 00:58:55

标签: php performance type-hinting

类型提示有助于编译器假设变量的类型,但是,由于PHP是一种动态脚本解释语言,如果类型提示甚至可以使运行时更快或更快,那么我就会想到这个问题?

4 个答案:

答案 0 :(得分:17)

PHP是一种动态语言 动态语言仅支持运行时检查 类型提示是运行时类型检查 运行时类型检查不利于性能 因此,提示类型对性能不利。

答案 1 :(得分:4)

类型提示只会妨碍性能,因为它需要(对象)来测试继承层次结构。更糟糕的是,这种检查在PHP中很昂贵,因为它在时间上与层次结构的深度成比例。

对类型的测试,例如为array提示所做的测试是一个小得多的开销。

此外,它目前不用于任何优化目的。

然而,它是一种有用的防御性编程功能。

答案 2 :(得分:2)

PHP中的所有类型提示都是添加测试参数类型的代码,如果不符合预期,则会失败,因此类型提示永远不会有助于提高性能。它唯一真正用于调试,所以如果你有一个经常被调用的函数,删除生产代码中的类型提示可以加快速度,特别是因为检查对象的类型并不是世界上最快的事情。

另见when should I use type hinting in PHP?

答案 3 :(得分:0)

我做了一个基准测试

https://github.com/EFTEC/php-benchmarks#type-hinting(您可以检查整个代码,对其进行测试并自行检查)。

/**
 * @param DummyClass $arg1
 * @param DummyClass $arg2
 *
 * @return DummyClass
 */
function php5($arg1,$arg2){
    return new DummyClass();
}
function php7(DummyClass $arg1,DummyClass $arg2): DummyClass {
    return new DummyClass();
}
  • php5 0.0006339550018310547秒
  • php7 0.0007991790771484375秒

与类型提示相比,类型提示要慢10%左右。 这不是很慢,除非在代码的重要部分(例如,巨大的循环)中需要它,或者我们需要原始性能。

我更喜欢PHPdoc,它的工作原理类似,它更完整,并且不影响性能。