Скорость Сравнение - Процедурный против OO в интерпретируемых языках

голоса
17

В интерпретируемых языков программирования, таких как PHP и JavaScript, каковы последствия происходит с объектно-ориентированного подхода по процессуальному подходу?

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

Итог: как большой (если таковой имеется) производительность хит на самом деле, при переходе с ОО против процедурный интерпретируемый язык?

Задан 06/08/2008 в 04:34
источник пользователем
На других языках...                            


7 ответов

голоса
17

Может быть, я сошел с ума, но беспокоиться о скорости в подобных случаях, используя интерпретирующий язык, как пытаются выяснить, в какой цвет покрасить сарай. Давайте даже не попасть в том, что этот вид оптимизации является полностью предварительно зрелым.

Вы попали в самую голову, когда вы сказали «ремонтопригодность». Я бы выбрал подход, который является наиболее продуктивным и наиболее ремонтопригодны. Если вам нужно скорость позже, она не собирается прийти от переключения между процедурным против объектно-ориентированного парадигма кодирования внутри интерпретируемого языка.

Ответил 06/08/2008 в 04:36
источник пользователем

голоса
10

К сожалению, я сделал мои тесты тоже. Я сделал тест скорости, и это примерно то же самое, но при тестировании использования памяти получать memory_get_usage () в PHP, я увидел в подавляющем большинстве случаев большее число на стороне ООП.

116,576 байт для объектно-ориентированного программирования в 18,856 байт для процедурной. Я знаю, что «Аппаратная дешево», но давай! увеличение 1000% в использовании? К сожалению, это не является оптимальным. И имея так много пользователей ударяя ваш сайт сразу, я уверен, что ваша память будет просто гореть, или кончится. Я ошибаюсь?

Ответил 22/07/2011 в 22:28
источник пользователем

голоса
5

Итог: нет, потому что накладные расходы интерпретации переполняют накладные расходы методы диспетчеризации.

Ответил 06/08/2008 в 04:35
источник пользователем

голоса
2

Если вы используете интерпретируемый язык, разница не имеет значения. Вы не должны использовать интерпретируемый язык, если производительность является проблемой. Оба будут выполнять примерно то же самое.

Ответил 06/08/2008 в 04:49
источник пользователем

голоса
1

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

ООП требует намного больше распределения памяти (таНос) и намного больше операций, чтобы запустить в памяти, чем процедурный код. Это требует гораздо больше процессорного времени для выполнения своих задач. Это, по существу, «накладные расходы», обернутые вокруг процессуального кодекса, накладывает дополнительную нагрузку процессора, чтобы выполнить его, особенно при выполнении операций с базами данных.

Многие программисты, как удобство объектно-ориентированного программирования, создавая маленькие черные ящики, спрятанные за простыми интерфейсами. Тем не менее, я заплатил хорошо реанимировать сайты, которые принимают навсегда, чтобы реагировать при высокой нагрузке пользователя. Зачистка из ООП и заменить его с помощью простых процедурных функций сделали огромную разницу.

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

Ответил 22/03/2015 в 19:31
источник пользователем

голоса
1

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

Только помните первое правило Optimiztion.

Не.

:)

Ответил 22/09/2008 в 19:18
источник пользователем

голоса
0

Я на самом деле сделал небольшой тест, как это в Python на веб-сайте я утверждаю, и обнаружил, что они почти эквивалентны скорости, с процедурным подходом победы что-то вроде десятитысячных секунды, но что код OO был настолько значительно уборщик я не стал продолжать упражнение больше, чем одной итерации.

Так что на самом деле, это не имеет значения (в моем опыте в любом случае).

Ответил 26/08/2008 в 21:01
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more