类型提示有助于编译器假设变量的类型,但是,由于PHP是一种动态脚本解释语言,如果类型提示甚至可以使运行时更快或更快,那么我就会想到这个问题?
答案 0 :(得分:17)
PHP是一种动态语言
动态语言仅支持运行时检查
类型提示是运行时类型检查
运行时类型检查不利于性能
因此,提示类型对性能不利。
答案 1 :(得分:4)
类型提示只会妨碍性能,因为它需要(对象)来测试继承层次结构。更糟糕的是,这种检查在PHP中很昂贵,因为它在时间上与层次结构的深度成比例。
对类型的测试,例如为array
提示所做的测试是一个小得多的开销。
此外,它目前不用于任何优化目的。
然而,它是一种有用的防御性编程功能。
答案 2 :(得分:2)
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();
}
与类型提示相比,类型提示要慢10%左右。 这不是很慢,除非在代码的重要部分(例如,巨大的循环)中需要它,或者我们需要原始性能。
我更喜欢PHPdoc,它的工作原理类似,它更完整,并且不影响性能。