Производительность Singleton Метод экземпляра класса или метод статического класса в PHP?

Меня интересует объективный анализ, который более эффективен; Вызов методов экземпляра одноэлементного класса или методов статического класса. Я уже видел этот , поэтому я не ищу дискуссию о разнице между ними или дискуссию о том, что «лучше». Я' Я заинтересован только в относительной производительности между ними. Заранее спасибо.

-Майк

6
задан Community 23 May 2017 в 12:09
поделиться

4 ответа

Проверьте эту диаграмму:)

alt text

получено из эта статья

18
ответ дан 8 December 2019 в 02:19
поделиться

Прежде чем вы сможете вызвать метод экземпляра объекта модели singleton, вам нужно сначала получить экземпляр, что требует вызова статического метода:

SomeClass::getInstance()->myMethod();
// versus
SomeClass::myMethod();

Поэтому в первый раз, когда вам понадобится доступ к этому объекту в функции, вам нужно будет сначала вызвать статический метод. Поскольку вызовы функций никогда не бывают бесплатными, вероятно, лучше сделать метод статическим.

3
ответ дан 8 December 2019 в 02:19
поделиться

Если вы не вызываете их в жестком цикле (то есть без другого значимого кода, где накладные расходы на вызов значительны) тысячи или сотни тысяч раз, не беспокойтесь об этом . Разница, скорее всего, составит менее микросекунды, поэтому не стоит беспокоиться. Просто сделайте лучший архитектурный выбор ...

Преждевременная оптимизация - корень всех зол ...

Редактировать: Всем противникам, вот сообщение в блоге , в котором я написал, что описывает , почему такие сравнения производительности бесполезны.

17
ответ дан 8 December 2019 в 02:19
поделиться

В предыдущих тестах что я сделал, я обнаружил, что вызов статических методов происходит быстрее, чем вызов методов экземпляра, и немного более эффективен с точки зрения памяти .... но синглтон не следует отклонять только по этим причинам.

1
ответ дан 8 December 2019 в 02:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: