За последние 24 часа нас посетили 18699 программистов и 1708 роботов. Сейчас ищут 900 программистов ...

Методы и производительность

Тема в разделе "Прочие вопросы по PHP", создана пользователем berilliy, 11 июн 2013.

  1. berilliy

    berilliy Новичок

    С нами с:
    11 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Добрый день.
    Вопрос производительности и использования памяти php. В документации намёков не нашел. Возможно, не так искал. Надеюсь на Вашу помощь.
    Допустим, у нас есть некий класс такого типа:
    Код (PHP):
    1. class veryBigClass
    2. {
    3.     public static $writeFlag; //флаг того, что нам надо будет читать
    4.     public static $readFlag; // флаг того, что нам надо будет писать
    5.         
    6.     public static function init($wF, $rF)
    7.     {
    8.         self::$writeFlag = $wF;
    9.         self::$readFlag= $rF;
    10.     }
    11.     
    12.     public static function write()
    13.     { // длинная функция с записью в файл }
    14.     
    15.     public static function read()
    16.     { // длинная функция с чтением файлов }    
    17.     
    18.     public static function action()
    19.     { 
    20.         // в зависимости от флагов читаем, пишем, читаем и пишем или не читаем и не пишем 
    21.         if(self::$writeFlag) { self::$write(); }
    22.         if(self::$readFlag) { self::$read(); }
    23.     }    
    24. }
    25.  
    Т.е. при инициализации мы передаём параметры - чем занимается класс (например, пишет, читает, или и то и другое).
    Вопрос: влияет ли на производительность наличие множества довольно "тяжелых" методов в классе?
    PHP грузит в память только используемые методы, когда натыкается на класс, или - все разом?
     
  2. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    -конечно, чем "тяжелее" метод, тем долльше выполняется и больше нужно ресурсов.
    -"грузит" все сразу. но не в том смысле что сразу их выполняет.

    зачем в классе все статическое? вы понимаете какие подводные камни вас будут ждать если будете активно использовать данный подход?
     
  3. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    Акселераторы спасут.
     
  4. berilliy

    berilliy Новичок

    С нами с:
    11 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Ибо класс что-то вроде ядра web-приложения. Мне кажется логичным сделать его статикой.
    Что-то вроде:
    Код (Text):
    1.  
    2. //...
    3. Core::init(0, 1);
    4. //...
    5. Core::action();
    6. //...
    7. Core::save();
    8. //...
    9. Core::shutdown();
    Или я что-то упустил?

    Ну да, и на акселераторы надежда. Кешировать-то не получится.
     
  5. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    У вас там что сто тыщ клиентов в секунду?
    Меньше парься =)
     
  6. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    ну а смысл?
    чтоб вручную вызывать замену конструктора и деструктора? отсутствие возможности использовать два экземпляра класса и т.д.
     
  7. berilliy

    berilliy Новичок

    С нами с:
    11 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Не сто тысяч. Что-то я погорячился :)
    Два экземпляра класса не нужны, в любом случае. Если не статик, то Синглетон надо делать.
    Да и одна строчка с вызовом инициализации погоды не сделает.
     
  8. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    опять двадцать пять.....
    Зачем??? ))) что значит надо? кому надо? ... нет дело ваше. я просто к тому, что чтобы делать именно так а не иначе, хороше бы понимать, зачем вы это делаете, что это дает.. и главное - нужно ли оно вообще в данном случае?
     
  9. berilliy

    berilliy Новичок

    С нами с:
    11 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Надо - чтобы это был единственный экземпляр и при обращении к нему из любого потаенного места приложения я был бы уверен, что он проинициализирован и готов к работе.
    Ну и, типа, ООП, паттерны, стильно-модно-молодёжно!
     
  10. igordata

    igordata Суперстар
    Команда форума Модератор

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    статик рулит. но это не имеет никакого отношения к ООП.

    удобно должно быть. единственное о чем стоит помнить.
     
  11. iliavlad

    iliavlad Активный пользователь

    С нами с:
    24 янв 2009
    Сообщения:
    1.689
    Симпатии:
    4
    упускаете время на написание нужного оптимизацией несделанного.
     
  12. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Да не парьтесь. Делайте статиками. У php на этот счет другие планы, не так как у чистых языков ООП.
    Статики наследуются и могут быть вызваны из родителя и дочернего класса. Если логично продумать структуру, мы не потеряем ничего.

    Хотя и есть такое, что ООП быстрее статика в php. Но вот логически подумать и можно-это все преодолеть. Статика удобнее, проще и можно оптимизировать и ускорить.
     
  13. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    прям неперестаю удивляться таким высказываниям...))
    -удобнее и проще чего? инстанцирования класса? или простыми функциями? так и возможности совсем разные становятся доступны. а для статики появляются ограничения в применении.

    -оптимизировать и ускорить? один тут доускорялся и наоптимизировал в теме про статические методы в объекте. а помто удивлялся почему процесс крешится. а всегото надобыло невыеб.ваться и сделать по колхозному, родить объект и работать с ним, и небыло бы проблем вообще.

    статикой тоже нужно уметь пользоваться. а еще учитывать особенности работы с ней в пхп.
     
  14. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Нет у статиков объекта. Есть только ссылка на класс.

    Ну так а чего вы ждете? Естественно надо.
    Но это не значит, что нельзя или не возможно.
    Правда-это не для слабонервных и не новичков.
    Тонкостей конечно много.
    Но статика в php отличается от других языков.
    По этому тут другой подход.
     
  15. berilliy

    berilliy Новичок

    С нами с:
    11 июн 2013
    Сообщения:
    5
    Симпатии:
    0
    Всем спасибо. Сделал класс статикой, как и планировал сначала.
    А можно ссылку на эту тему? Интересно :)
     
  16. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    вот
     
  17. Your

    Your Старожил

    С нами с:
    2 июл 2011
    Сообщения:
    4.074
    Симпатии:
    7
    Ну по работе с базами данных и соединениями это уж точно не для слабонервных.
    У него там в кучу все написано, кучи классов и объектов непонятно зачем и для чего.
    Спецам в программировании давно известно, что нет необходимости делать кучи классов и объектов. Потому, что они знают как проектировать и не прибегают к задротству мозга в стадии написания скрипт-кодов, потому что у них уже все задачи спроектированы в письменной форме.

    И они пишут программный скрипт-код уже по спроектированным задачам, пунктам и подпунктам.
    Все задачи которые нужны для запуска сайта в жизнь, хоть какой-то минимум для полной выполненной задачи.