Mail.ruПочта0Мой Мир0ОдноклассникиВКонтактеИгры0ЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

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

Милый Пушок Гуру (3984), закрыт 9 лет назад
Лучший ответ
Duality Просветленный (29400) 9 лет назад
tl;dr: глупые вопросы, следующие из непонимания разницы между статическими и инстансовыми методами.

> Если статические методы быстрей обычных
Неверное утверждение. Скорость от статичности не зависит, зависит от кол-ва вычислений.
> везде статику юзать и все, есть какие то плюсы
Юзать надо то, что подходит. Если методу не требуется состояние, делай статическим. Требуется - делай инстансовым.
Да, можно сделать все методы статическими и, если понадобиться состояние, передавать объект явно, но к увеличению скорости это не приведет, а приведет только к необходимости ручками передавать объекты и потере плюшек ооп вроде виртуальных функций и интерфейсов.
Можно сделать все методы инстансовыми, опять таки - медленнее вряд ли станет, ибо компилятор не дурак и неиспользуемый объект проигнорит. Зато на каждый чих придется создавать по объекту, даже если он не нужен.

Так шо закручивайте болты отверткой, а бревна пилите пилой, а не наоборот.
Милый ПушокГуру (3984) 9 лет назад
разницу понимаю, просто большинство говорит что статический метод быстрей
Остальные ответы
Чебуратор Мыслитель (8449) 9 лет назад
А к полям класса ты как будешь обращаться? Статический метод - значит и данные должны быть статическими.
Капитан Гугл Искусственный Интеллект (146251) 9 лет назад
ООП медленнее процедурного програмирования. Если тебе важна скорость - откажись от ООП вообще, в чем проблема-то? ООП не для скорости работы программы придумали.
Милый ПушокГуру (3984) 9 лет назад
проверил время сильно нагруженным циклом, метод статика и обычный а так же просто ф-ция все они время одинаковое показывают)
Капитан Гугл Искусственный Интеллект (146251) Извини, не телепат, не могу подсказать, в чем именно дело - то ли в том, что на вызове функции в 1000 тактов экономится 1 такт и это незаметно, то ли в том, что оптимизатор поработал... static и просто функция - одно и то же, разница только в названиях. Обычный метод - чуть медленнее (на 1 стековую переменную). Виртуальный (который, собственно, и определяет необходимость ООП) - еще на одно косвенное обращение к памяти медленнее.
Похожие вопросы