@IllusionTurtle

Почему protected и private методы значительно медленнее чем public?

Обычно не обращал на подобные вещи внимания, подразумевая что особой разницы быть не должно, "причем тут скорость работы и область видимости" - думал я.
Более того старался делать больше static методов(если иное не предполагается), считая что static быстрее(habrahabr.ru/post/23268 согласно древней статьи)
Заметил странное поведение совершенно случайно... написал простейший скрипт со всеми вариантами вызова методов(for{echo} много много раз).
И оказалось - что static что не static метод, разницы особо никакой...
а вот между областью видимости методов разница огромна:
public - почти 0.2 секунды
private - плавает как повезет от 0.5 до 1 секунды
protected - около 1 секунды

php 5.6.3
  • Вопрос задан
  • 2500 просмотров
Пригласить эксперта
Ответы на вопрос 5
maaGames
@maaGames
Погроммирую программы
Повтори тесты без echo.
Ответ написан
Комментировать
FanatPHP
@FanatPHP
Чебуратор тега РНР
Если ты пишешь тесты так же сумбурно, как и вопросы, то и 10 минутам не стоит удивляться.
"около 1 секунды" - это вызов метода 1 раз или "много много раз"?
Если первое, то у тебя что-то сломано.
Если второе, то "особой разницы нет".
Ответ написан
Комментировать
выбирать модификаторы доступа из соображений оптимизации - мягко говоря не самый мудрый подход.
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Какая-то антинаучная куйня - статика возможно и работает быстрее, но сжирает больше оперативки, стальное бред.
Ответ написан
Комментировать
@IllusionTurtle Автор вопроса
Вот спрашивай у вас после этого :)
вопрос же был не в том, что правильно, а что нет, и не в том, что в большинстве случаев "особой разницы нет".
Конкретная ситуация - есть код, и по правилам, метод должен быть protected, но если сделать его public(что уже будет не совсем "красиво") он выдаст результаты немного быстрее. Большинство пользователей, возможно, не увидели бы разницы, НО она ведь есть...
Мне просто стало интересно ПОЧЕМУ!
Окей, вопрос закрыт, панику прекращаю, просто не правильно тестировал.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы