Является ли использование функции псевдонима PHP плохой производительностью / плохой практикой? - PullRequest
2 голосов
/ 29 января 2010

Просто из любопытства,

Получает ли псевдоним встроенной функции PHP больше мощности, чем сама обычная функция.

АКА, sizeof() занимает больше времени, чем count() для запуска?

Примечание для полиции по микрооптимизации: Если нет огромных различий, я не планирую пытаться микрооптимизировать свой сценарий. Было просто любопытно.

Примечание для «Просто попробуй сам» Полиция: Я не могу сейчас получить доступ к среде PHP.


Похоже, что это также расширилось до «Best Pratice», поскольку в документации PHP говорится, что псевдонимы лучше не использовать, и, в свою очередь, их следует просто вызывать с помощью функции master. В этом случае это будет означать, что count() следует использовать вместо sizeof().

Ответы [ 3 ]

3 голосов
/ 29 января 2010

Я совершенно уверен, что они компилируются с одинаковыми эквивалентами байт-кода, поэтому ответ будет отрицательным.

1 голос
/ 29 января 2010

Используя http://github.com/gms8994/benchmark/blob/master/php/sizeof_vs_count.php, вот то, что я придумал. Конечно, это только сравнение sizeof и count, но, по крайней мере, ответ на часть вопроса

glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.44s at 134374.010/s
count($globals->x);: 1000000 iterations took 8.21s at 121806.517/s
glens@glens-desktop:~/scripts/benchmark/php
glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.84s at 127475.401/s
count($globals->x);: 1000000 iterations took 7.79s at 128437.659/s
glens@glens-desktop:~/scripts/benchmark/php
glens@glens-desktop:$ ./sizeof_vs_count.php 
sizeof($globals->x);: 1000000 iterations took 7.53s at 132807.066/s
count($globals->x);: 1000000 iterations took 7.49s at 133442.192/s
1 голос
/ 29 января 2010

Насколько я понимаю, псевдонимы обычно являются результатом нескольких разных вещей. Например, когда изменяются соглашения об именах или сами имена функций. Было бы губительно немедленно уничтожить старую конвенцию. Кроме того, они полезны для пользователей, которые происходят из другого языка, и хотели бы использовать многие из тех знакомых методов, к которым они уже привыкли.

Я не думаю, что есть какие-то дополнительные накладные расходы. Но обязательно ознакомьтесь с официальной документацией, для которой рекомендуется использовать имя метода / функции, так как в неопределенном будущем устаревание всегда потенциально вырисовывается.

"... есть функции, которые изменили имена из-за очистки API или по какой-либо другой причине и старые имена сохраняются только в качестве псевдонимов для обратной совместимости . Обычно это плохая идея использовать такие псевдонимы , так как они могут быть связаны с устареванием или переименованием, что приведет к непереносимым сценариям ... "

http://php.net/manual/en/aliases.php

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...