Какой язык программирования удовлетворяет веб-разработке важного приложения?

Согласно этой странице, кажется, что Perl, PHP, Python в 50 раз медленнее, чем C/C ++/Java.

Таким образом я думаю Perl, PHP, Python не мог обработать важное приложение (такой как> 100 миллионов пользователей,> xx миллион запроса каждую секунду) хорошо. Но исключения, существуют, например, Facebook (это, сказал, что Facebook записан с PHP полностью), wikipeida. Кроме того, я слышал, что Google использовал Python экстенсивно.

Итак, почему? Действительно ли это - более быстрая аппаратная заливка большой разрыв скорости между C/C ++/Java и Perl/PHP/Python?

спасибо.

5
задан Schwern 5 January 2010 в 11:46
поделиться

9 ответов

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

И нет, более быстрое аппаратное обеспечение - это не решение. На самом деле Google известен использованием кластера недорогих машин

.
5
ответ дан 18 December 2019 в 09:07
поделиться

(например, >100 миллионов пользователей, >xx миллионов запросов каждую секунду)

Для достижения такой производительности, вы собираетесь HAVE для разработки и реализации веб-сайта / приложения в качестве масштабируемой многоуровневой системы с репликацией через (вероятно) все уровни. На данный момент тот факт, что один язык программирования быстрее/медленнее другого, вероятно, влияет только на количество машин, которые нужны в вашей процессорной ферме. Архитектура системы имеет гораздо большее значение

.
3
ответ дан 18 December 2019 в 09:07
поделиться

Google использует Python для GAE, а Windows Azure предоставляет PHP. Архитектура LAMP отлично подходит для масштабируемости приложений.

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

Надеюсь, это поможет

.
0
ответ дан 18 December 2019 в 09:07
поделиться

Для обслуживания веб-страницы необходимо:

  1. Получить и разобрать запрос.
  2. Решите, что вы хотите сделать с запросом.
  3. Чтение/запись постоянных данных (база данных, кэш, файловая система)
  4. Вывод HTML-данных.

Скорость" языка серверной стороны относится только ко второму и четвертому шагам. Учитывая, что большинство скриптов стараются максимально сократить шаг 2, а большинство веб-языков (включая PHP) максимально оптимизируют шаг 4, на любом серьезном веб-сайте большая часть времени на обработку запроса будет потрачена на шаг 3.

И время, затрачиваемое на шаг 3, не зависит от используемого вами языка на стороне сервера... если только вы не реализуете собственную базу данных и распределенный кэш.

0
ответ дан 18 December 2019 в 09:07
поделиться
[

] Вычислительный код - это наименьшее из того, что меня беспокоит в большинстве веб-приложений с интенсивным использованием. [

] [

] Горлышки для бутылок в типичном высокодоступном веб-приложении (не в таком порядке, но скорее всего): [

] [
    ] [
  1. ] База данных (IO и ЦП) [
  2. ] [
  3. ] Файл IO [
  4. ] [
  5. ]Network Bandwidth[
  6. ] [
  7. ] Память на сервере приложений [
  8. ] [
  9. ] Ваш Java / C++ / PHP / Python код [
  10. ] [
] [

] Ваша основная задача - сделать ваше приложение масштабируемым: [

]. [
    ] [
  1. ]Сокращение доступа к базе данных (кэширование, с учетом кластеризации, интеллектуальный запрос)[
  2. ]. [
  3. ] Распределите ваше приложение (кластеризация) [
  4. ]. [
  5. ] Устранить бесполезные блокировки синхронизации между потоками (см. commons-pool 1.3) [
  6. ]. [
  7. ]Создайте правильные индексы БД, модель данных и репликацию для поддержки многих пользователей[
  8. ]. [
  9. ]Уменьшите размер своих ответов с помощью инкрементных обновлений (AJAX)[
  10. ]. [
] [

] Только после того, как все вышесказанное будет реализовано, оптимизируйте свой код [

]. [

] Пожалуйста, не стесняйтесь добавлять в список, если я что-то пропустил [

].
7
ответ дан 18 December 2019 в 09:07
поделиться
[

] в php нет компилятора JIT, который бы компилировал код в машинный [

]. [

] Другая важная причина - динамический набор текста в PHP. Язык с динамическим набором текста всегда будет медленнее...[

]. [

] нажмите ниже и прочтите подробнее [

]. [

] [] Что делает PHP медленнее Java или C#? [] [

]
2
ответ дан 18 December 2019 в 09:07
поделиться
[

] C - самый быстрый язык. Он настолько быстр, что мы пишем на нём другие языки. Никто серьезно не пишет сайты на C. Почему? Его очень легко испортить на C способами, которые очень трудно обнаружить, и он почти ничего не делает, чтобы помочь Вам. Короче говоря, он ест программистов и генерирует ошибки[

]. [

] Построение надежного, быстрого приложения - это не выбор самого быстрого лангайзера, это о A) ремонтопригодности и B) масштабируемости. [

] [

] Устойчивость означает, что в ней не так уж много ошибок. Это означает, что вы можете быстро добавлять новые функции и изменять существующие. Вам нужен язык, который делает за вас как можно больше работы и не мешает. Вот почему такие вещи, как Perl, Python, PHP и Ruby так популярны. Все они были написаны с учетом удобства программиста за сырую производительность или аккуратность. С был написан для сырой производительности. Java была написана для концептуальной аккуратности[

]. [

] Масштабируемость означает, что вы можете перейти от 10 пользователей к 10 000 без переписывания всего. Раньше это означало, что вы написали самый плотный код, которым можно управлять, но высокооптимизированный код, как правило, сложно поддерживать в работоспособном состоянии. Обычно это означает делать вещи на благо компьютера, а не человека и бизнеса. Это жертва удобства обслуживания, и вы должны сказать своему боссу, что на добавление новой функции уйдет 3 месяца[

]. [

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

]. [

] Например, я взял вялое PHP-приложение, которое с трудом справлялось с 50 пользователями одновременно, переключился с Apache с mod_php на []lighttpd[] с балансировкой нагрузки, удаленными []FastCGI[] процессами, позволяющими распараллелить код с минимальным количеством изменений. Некоторые базовые профилирования показали, что PHP-фреймворк, который они использовали для прототипирования, был медленным, поэтому он был удален. Профилирование также предложило несколько индексов, чтобы сделать запросы к БД более быстрыми. В результате получилась система, способная работать с тысячами пользователей, и при необходимости можно было добавлять больше мощности, оставляя большую часть кода, реализующего бизнес-логику, нетронутой. Это заняло несколько недель, и я не очень хорошо знаю PHP[

]. [

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

]. [

] Вы увидите, что большая часть веб-страниц написана на PHP, Perl и Python, потому что их легко писать, с маленькими, острыми битами, написанными на таких вещах, как C, Java и экзотика, как Scala (например, Twitter). []Wikia[], например, модифицированная Mediawiki, написанная на PHP, но выполняемая (среди прочих причин) с помощью []героического количества кэширования[].[

].
1
ответ дан 18 December 2019 в 09:07
поделиться

Для php, есть много вещей, которые можно сделать, чтобы увеличить производительность. Например

  • Php Ускоритель
  • Кэширование запросов
  • Оптимизация запросов
  • Использование профилировщика для поиска более медленных частей и оптимизации

Эти вещи, безусловно, помогут сократить разрыв между языками нижнего уровня. Так что, чтобы ответить на свой вопрос, внутри кода есть и другие вещи, которые можно оптимизировать и заставить его работать быстрее

.
0
ответ дан 18 December 2019 в 09:07
поделиться

Я согласен с люк. На самом деле имеет значение архитектура, а не язык программирования.

0
ответ дан 18 December 2019 в 09:07
поделиться
Другие вопросы по тегам:

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