За последние 24 часа нас посетили 17558 программистов и 1723 робота. Сейчас ищут 1857 программистов ...

ООП или процедурный код. Что быстрее?

Тема в разделе "PHP для новичков", создана пользователем WoWeb Hunter, 12 фев 2018.

  1. WoWeb Hunter

    WoWeb Hunter Новичок

    С нами с:
    25 май 2017
    Сообщения:
    28
    Симпатии:
    1
    Читал статьи, но везде есть свои НО, да еще и в комментариях пишут противоречивую информацию. Хочу раз и навсегда поставить точку в этом вопросе.

    ООП тормозит или все зависит от древности ооп кода, самого алгоритма и рук кодера?

    Доводы о том что ООП легче читается вообще не интересуют. Абсолютно не интересно кто будет читать мой процедурный код, специфика скрипта такова что сторонний человек все равно не поймет толком о чем идет речь, тем более что в коде очень много математики + лично мне процедурный код более понятен.
     
  2. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Вот к примеру мой ООП скрипт https://github.com/VasyaSh/Paletter ,а вот точно такой же алгоритм, но в виде одной функции https://php.ru/forum/threads/kuplju-skript.67721/page-4#post-549953 и она работает в 6 раз быстрее, чем ООП. Но причина этого в том, что для таких алгоритмов ООП не нужен. Здесь вместо того, чтобы 10 тыс раз записать число в переменую, 10 тыс раз создается объект Color, да еще с __call() вместо нормальных методов.
    ООП версию я сделал для красоты. Потому что ООП нужно для построения архитектуры приложения, а не для реализации алгоритма. В приложении в целом не будет разницы, в ООП его "каркас" или нет.
     
  3. WoWeb Hunter

    WoWeb Hunter Новичок

    С нами с:
    25 май 2017
    Сообщения:
    28
    Симпатии:
    1
    простыми словами, лучше копи паст сложного процедурного кода в 10 местах, чем одна сложная функция на ООП которая используется в 10 местах.

    из другой моей темы в которой вы отписались. Чат на ООП сильно тормозит или можно смело его написать на ООП? Сам чат не сложный скрипт, но кол-во пользователей велико.

    А делать мат. вычисления на ООП я уже понял что нельзя, в чем собственно убедился на практике.
     
  4. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    отвечу коротко - процедурный код быстрее
    --- Добавлено ---
    но, в глобальных переменных, таких как подключение к бд, будет косяк. Надо будет постоянно писать во функции global или прописывать дополнительный аргумент "коннект" test_function( $mysqli, $... );
    --- Добавлено ---
    хотя конструкцию класса написать мона на статике
     
  5. ADSoft

    ADSoft Старожил

    С нами с:
    12 мар 2007
    Сообщения:
    3.858
    Симпатии:
    748
    Адрес:
    Татарстан
    от себя добавлю - не настолько быстрее. чтобы из-за скорости пренебрегать ООП (удобством, расширяемостью итд)
    если на то пошло - PHP вообще не рекордсмен скоростей.... потому если нужны математич и другие функции - лучше писать на то что реально быстро - типа C++ итд, а из php обращаться к результатам
     
  6. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    ООП код в конце концов понятнее.... хочешь исправить логику - она в модели..
    хочешь что то вывести еще на экран.. пошел в контроллер- подготовил данные.. пошел в вьюху - добавил переменную в шаблон...
    мешанина из кода + длинные портянки кода рано или поздно становятся плохо читаемыми..
    по себе знаю))
     
    TeslaFeo нравится это.
  7. runcore

    runcore Старожил

    С нами с:
    12 окт 2012
    Сообщения:
    3.625
    Симпатии:
    158
    кто мешает все это сделать в процедурном стиле?
    почему если процедурный код - то сразу "мешанина кода и длинные портянки"?
    Разделить логически код, реализовать подобие MVC можно и без ООП.
    насчет скорости, если дружить с головой и понимать как это все работает, то можно писать код который будет одинаково быстрый. тем более что можно взять от каждого подхода лучшее и писать комбинированный код, где нужно применить ООП, а остальное процедурками..
    этого никто не запрещает делать. зачем загонять себя в искусственные рамки и ограничения. ТОЛЬКО одно или ТОЛЬКО другое..
    главное, чтобы код решал поставленную задачу.
     
    mahmuzar, Maputo, Walk и 4 другим нравится это.
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Да, господи, да.
     
    Рихард нравится это.
  9. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    можно)) если чтото небольшое делаете))
    а когда появляются сотни функций, начинаешь в них путаться)) лучше что бы они были по моделям распиханы) что бы методы работы с моделью были собраны в одном классе)
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    [​IMG]

    В целом, быстрее выполняется не значит лучше.
     
    Рихард нравится это.
  11. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    вот тут начну спорить - не лучше в чем ? в opcode ? быстродействии интерпретатора над логистикой кода, без абстрактного занесения конструкции в память ?
    --- Добавлено ---
    весь ооп перед началом использования, заносится конструкцией класса в память как константы обыкновенные, далее выстраивается логическая цепочка всех связей, а уж потом начинает работать.
     
  12. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Не лучше как болид ф1 не лучше седана Е класса для жизни
    --- Добавлено ---
    @artoodetoo это даже не ф1, что это вообще?))
     
  13. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    @[vs] это процедурный код (Drag racing)
     
  14. WoWeb Hunter

    WoWeb Hunter Новичок

    С нами с:
    25 май 2017
    Сообщения:
    28
    Симпатии:
    1
    когда я узнал что пдо = ооп, я вздохнул с облегчением, т.к. не нужно изучать этот вопрос. банальная регистрация пользователя на ооп намного сложнее и даже количество символов больше. да, работать на ооп в чужом коде возможно и легче, но подходит он для простеньких сайтов. а что если при нажатии одной кнопки у вас высчитывается два десятка мат. вычислений?
     
  15. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    Если вычисления сложные, а объем большой, лучше реализовать их виде кода на тех же С++, а потом вызывать полученное приложение из PHP через exec, передавая ему данные на вход и забирая ответ.
     
  16. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Наоборот, он подходит для сложных модульных сайтов. Если у тебя сложные вычисления, то напиши процедурный код и вызывай его через ООП.
     
  17. WoWeb Hunter

    WoWeb Hunter Новичок

    С нами с:
    25 май 2017
    Сообщения:
    28
    Симпатии:
    1
    завышенная планка для меня. доверить разработку стороннему человеку не могу по многим причинам, а си это уже хай левел. решил писать сабж из соседней теме на php+mysql, необходимый минимум выдержит и к моменту когда мой скрипт станет тормозить: 1. или нанять за большие деньги реального специалиста(и стоять у него над головой во время работы, без доступа в интернет и без портов для карт памяти), 2. или самому освоить соккеты+node.js.

    хороший вариант скелета движка, однако у меня нет необходимости в дальнейшем поручать работу стороннему разработчику, ко всему прочему я не дам исходной код из-за недоверия. все плюсы ООП о которых говорят, для моей задачи теряют актуальность. + процедурный вариант мне лично читать намного удобнее. возможно я сильно ошибаюсь из-за неопытности, время покажет.
     
  18. Deonis

    Deonis Старожил

    С нами с:
    15 фев 2013
    Сообщения:
    1.521
    Симпатии:
    504
    :eek: Чисто из любопытства, а что за такой секретный проект, чтобы такие меры предпринимались? Мне без шуток интересно, т.к. за всё время у меня не было ни одного клиента, который хоть что-то приблизительное в условиях мне поставил. Хотите верьте, хотите нет, но даже сейчас у меня есть все доступы к серверам моих клиентов. А как иначе? Если что-то случается, то мне нужно оперативно вмешаться, чтобы решить проблему, а не ждать, когда клиент приедет, приставит ствол к виску и откроет доступ.
     
    Алекс8 и TeslaFeo нравится это.
  19. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    Проект «Мускатный орех»
     
  20. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.770
    Адрес:
    :сердА
    +1. Причем привелегии этого доступа могут быть выше, чем те, что есть у самого клиента.
    --- Добавлено ---
    Вы можете трижды стоять у него за плечом, но у него уже есть полный доступ к системе, он уже может заложить любую закладку, а вы и не просечете. А доступ к интернету нужен обязательно. Документацию наизусть никто не учит.

    В общем, это как с врачом. Разраб - хирург, а сервер жертва пациент. Если только вы не хотите сами потратить несколько лет, чтобы научиться самостоятельно проектировать сложные системы.
     
  21. Алекс8

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

    С нами с:
    18 май 2017
    Сообщения:
    1.730
    Симпатии:
    359
    посмотрел только что ФТП клиент)) больше 100 доступов к разным серверам))
     
  22. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.583
    Симпатии:
    1.761
    ООП инструмент, никто не говорит, что лучший и единственно возможный. Тут как бы спорить не о чем. Нравится на процедурах - делайте на процедурах, только желательно нормальных процедурах, не в 20 экранов каждая.

    Если что, можно математические вычисления вынести в объект так, что будет быстро, тут правильно сказали. Главное - использование слова class ещё не говорит, что в проекте ООП.
     
    Алекс8 нравится это.
  23. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.794
    Симпатии:
    1.330
    Адрес:
    Лень
    вот только WordPress обосрался, когда по началу хотел все супер пупер замутить на процедурном кодом. Прошло несколько лет и надо было функции менять и логику. Бдыш - ебать копать... они замутили говнофреймворк
     
    [vs] нравится это.
  24. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.108
    Симпатии:
    1.243
    Адрес:
    там-сям
    драгстер — говна кусок, но очень быстрый кусок :D оно лучше чем … только для того, кто этим увлекается.
     
  25. WoWeb Hunter

    WoWeb Hunter Новичок

    С нами с:
    25 май 2017
    Сообщения:
    28
    Симпатии:
    1
    Отвечу коротко. Проект не стандартный. 99 процентов что никто тут не сталкивался. Ценность представляют рассчетные алгоритмы, в меньшей степени интерфейс и то, что не связано с кодингом. Стандартная, шаблонная работа кодера, назовем ее юзабилити - ценности не представляет. Ни о какой передаче доступа к файлам и речи быть не может)) Скажем так, если в сети 90 процентов IPB варезный и это не сильно(возможно) бьет по карману разработчиков данного скрипта, то в моем случае потеря исходников фатальна.(хотя даже при потере исходника, развивать скрипт нормально не смогут.)

    Касательно ООП. Мне приводили довод, мол процедурный скрипт - это готовый скрипт, переписывать его не будешь. А если скрипт не развивается - это дохлый скрипт. Не знаю на чем был написан тот же IPB или PhpBB, вполне возможно на процедурном, ныне на ооп. Но долголетие этих скриптов говорит о том что все зависит от желания.

    Еще добавлю, что для многих ООП - нежелание париться. Чат что мне делали, я глянул исходник. Накинули готовых функций. Это не дело. Это не программирование. Сравнить могу с сайтом верстку которого делали в wysiwyg. таблицу создали, параметры отредактировали, а как все это работает - не знают.

    И при всем этом, даже с моим мизерным опытом, согласен что ООП очень удобно. Но гнобить процедурный стиль из-за того что "сейчас так никто не делает" не стоит. Всему свое место. И еще, со временем возможно парадигма ООП измениться или появиться что-то новое, а процедурный стиль будет всегда.

    Коротко не получилось))
     
    #25 WoWeb Hunter, 16 фев 2018
    Последнее редактирование: 16 фев 2018
    MouseZver нравится это.