Хинтинг типа помогает компилятору принять тип переменной, но, поскольку PHP является интерпретируемым языком динамических сценариев, у меня возник вопрос, возможно ли, что хинтинг типов даже ускоряет выполнение или нет?
PHP — динамический язык.
Динамические языки поддерживают только проверку во время выполнения.
Подсказка типа — это проверка типа во время выполнения.
Проверка типов во время выполнения плохо влияет на производительность.
Следовательно, подсказка типа плохо влияет на производительность.
Все, что делает подсказка типа в PHP, это добавляет код, который проверяет тип параметров и терпит неудачу, если это не то, что ожидается, поэтому подсказка типа НИКОГДА не повышает производительность. Его единственное реальное использование — отладка, поэтому, если у вас есть функция, которая вызывается очень часто, удаление подсказки типа в производственном коде может ускорить процесс, тем более что проверка типа объекта — не самая быстрая вещь в мире.
Подсказка типа только снижает производительность, поскольку требует (для объектов) проверки иерархии наследования. Что еще хуже, этот вид проверки является дорогостоящим в PHP, потому что он выполняется за время, пропорциональное глубине иерархии.
Тем не менее, проверка типа, такая как проверка подсказки array
, требует гораздо меньших затрат.
Кроме того, в настоящее время он не используется ни для каких целей оптимизации.
Тем не менее, это полезная защитная функция программирования.