Подтвердить что ты не робот

PHP против Java есть различия в потреблении энергии?

Я слышал слух, что Java потребляет меньше энергии, чем PHP, и задавалась вопросом, будет ли и как это будет верно. В настоящее время я работаю в компании, где мы основываем большинство наших приложений на PHP. Потребление энергии никогда не было проблемой для нас, но мы работаем над большими проектами, где это может иметь значение. Мы любим PHP для веб-разработки и задаемся вопросом, как может распространяться такой слух, и если это правда вообще.

Пример, который я слышал, это то, что Facebook переключается именно на эту причину на Java (я не могу найти что-либо из этого в Google, хотя).

Так как мой клиент задает мне этот вопрос, мне бы понравилось доказательство, если оно верно.

4b9b3361

Ответ 1

Компьютеры не особо заботятся, если они выполняют Java или PHP. Потребляемая мощность почти такая же. Затем возникает вопрос о производительности - если вы можете подавать больше запросов с одного сервера, вам потребуется меньше серверов и потреблять меньше энергии. Или, альтернативно, если вы не используете приложения для веб-масштабирования, быстрее выполняйте свои запросы и тратите больше времени на холостой ход, что потребляет меньше энергии.

Учитывая чистую Java и чистый PHP, Java, как статически типизированный язык JIT, конечно, быстрее. Вопрос скорее в том, что вы можете сделать быстрее, если члены команды и усилия по развитию доступны вам.

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

Ответ 2

Я действительно сомневаюсь, что это проблема только на языке.

Платформы, о которых идет речь, имеют такую ​​большую изменчивость, чтобы сделать любые общие сравнения. Чтобы назвать несколько точек изменчивости.

  • Контейнер сервлета для Java (Tomcat, Glassfish, Websphere, Jetty,...)
  • Веб-сервер для PHP (Apache, IIS, lighttpd, nginx,...)
  • Ключи опкода для PHP
  • Используемые библиотеки и фреймоуроки
  • Операционные системы
  • Участие жестких дисков
  • Охлаждение
  • Алгоритмы самого приложения

Я действительно сомневаюсь, что вы можете выделить так много переменных в полезную метрику. В большинстве случаев вы можете выбрать два эквивалентных приложения (отметив все варианты платформы) с использованием того же оборудования и сравнить их. Затем улучшите худшее, пока оно не станет лучшим. Я думаю, что правильное измерение будет как ваттами в час, так и запросами в секунду.

То, что было отмечено в Ответ муравьев (повышать его), является решающим моментом: лучшая платформа будет всегда более энергоэффективной, учитывая достаточный спрос, поскольку он сможет обслуживать одинаковое количество запросов с меньшим количеством аппаратного обеспечения.

Но какая платформа лучше работает не только зависит от языка, зависит от вещей, отмеченных выше (и некоторых других).

Ответ 3

Я был удивлен этим вопросом, пока не выполнил поиск Google, который превратил this вверх. Это серьезная проблема, о которой я бы даже не подумал.

Теперь, когда я думаю об этом, я думаю, что это вопрос того, кто платит электрический счет. Стратегия Sun Java заключалась в продаже серверов: большое железо для спины, тонкие клиенты для передней части.

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

Но я был бы удивлен, увидев рейтинг языков по энергопотреблению.

Очень интересный вопрос. Я голосую за него.

Какая увлекательная проблема. Не интересно было бы написать приложение на нескольких языках, развернуть их на одинаковом оборудовании и измерить энергопотребление? Я хотел бы это увидеть.

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

Теперь я хочу, чтобы я снова мог проголосовать за этот вопрос.

Ответ 4

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

lesswatts.org имеет немного информации об управлении питанием приложений, а также несколько других аспектов энергопотребления в системах Linux. В качестве побочной заметки они, похоже, используют PHP, поэтому это может стоить чего-то само собой:)

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


В большинстве случаев веб-сервер сидит без дела, затем он "обслуживает" в течение очень короткого момента, а затем возвращается к ожиданию следующего соединения. В связи с этим PHP внесет очень незначительный вклад в весь процесс: только обслуживающая часть. Поэтому я задаюсь вопросом, был ли фактический ориентир сопоставлением конкретного веб-сервера на основе Java с Apache/PHP, обслуживающего аналогичные страницы. Если это так, то это не очень хорошее сравнение PHP и Java - любой из двух, которые считаются обслуживающими фактическую страницу, активен только в миллисекундах за раз, как правило. Я бы подумал, что фактический веб-сервер, тот, кто выбирает или обследует соединения, является тем, который будет мощью hogging.

Ответ 5

Посредством потребления энергии вы имеете в виду потребление энергии Вт?

Я не уверен на 100%, но даже если это правда, я думаю, что это похоже на оптимизацию части вашего кода, которая выполняется в 0,01% от времени выполнения вашей программы.

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

Однако это должно сделать интересное обсуждение.

Ответ 6

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

Является ли использование Java, PHP или любой другой технологии внедрения, скорее всего, определяющей для потребления энергии, менее очевидно для меня.

Если бы мы реализовали определенную часть функции, оптимизирующую потребление ресурсов, скажем, Интерпретированный Basic, Java и C, и мы ожидаем, что нам понадобится большинство ресурсов выполнения.

Мне нужно было бы увидеть некоторые убедительные доказательства, но я мог поверить, что чистый интерпретируемый язык может потреблять больше, чем Java, и даже с JIT и т.д., в свою очередь, может потреблять больше, чем C.

Теперь просто предположим (чисто гипотетически, я не говорю, что это так), что было больше усилий для разработки на C, чем на Java, и больше усилий для разработки на Java, чем в Basic. Как бы вы могли отказаться от усилий по разработке и обслуживанию против этого потребления ресурсов?

Действительно сложно сделать. Если кто-то сказал мне, что они переезжают на Явскую подошву на основе энергопотребления, я бы действительно хотел узнать больше. Каковы затраты при этом? Где была точка безубыточности? [BTW - Я работаю почти исключительно на Java, я бы хотел сказать "мы победим, посмотрим, насколько мы мала!" ]

Ответ 7

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

Например, сравнение шутера от первого лица Java3D на веб-странице PHP будет несправедливым, поскольку Java проиграет.

Если вы посмотрите на фреймворки Java, вы можете сравнить эти три: Tomcat + JDK 6 + JSP Apache + PHP Scala + Подъемная рама

Я включил Scala, поскольку он компилируется в java-байт-код, и я ожидаю, что он будет самым дешевым для власти.

Я не уверен, что будет победителем, я бы поставил на Scala, но вы бы хотели убедиться, что у вас есть одно и то же приложение, а затем просто сравните использование мощности.

PHP, вероятно, будет побеждать как apache, а PHP, по-видимому, будет ниже при использовании памяти, чем Java, но я не могу сравнивать Scala и PHP.

Большое неизвестное для меня - это то, что если вы вызываете один и тот же код Java, он уже был превращен в собственный код и поэтому будет работать быстрее, но JSP должен быть предварительно скомпилирован для использования Java.

Но если вы используете технологии Web2.0, то он изменяется, поскольку вы загружаете большую часть загрузки в браузер, если у вас большое приложение javascript, тогда вы просто выполняете вызовы сервера, что уменьшит потребление энергии на сервер, поскольку работа рендеринга передается в браузер. В этот момент JIT для Java должен вступить в игру, а Java или Scala я ожидаю, что будет меньше при использовании энергии.

Большой тест, IMO, должен был бы увидеть, можем ли мы получить такую ​​же производительность, как мы уменьшаем размер машины, поэтому, если вам нужны 3 компьютера для PHP или Java, которые сбалансированы по нагрузке и 1 Scala машина может иметь одинаковую производительность, тогда победит Scala (используя Lift).

Ответ 8

Энергоэффективность - это целое поле само по себе. Обычно лучше всего выполнять измерения (с учетом того же оборудования). Если сравнивать другое оборудование, то это целая "шаровая игра".

Таким образом, при использовании того же оборудования, если стек программного обеспечения может работать лучше, чем другой стек программного обеспечения, то это означает, что более эффективный стек программного обеспечения будет потреблять меньше энергии "за запрос", чем другой. Если разница в производительности достаточно велика, чтобы вы могли консолидировать свои серверы на меньшее, тогда это еще больше выиграет!

Есть много других соображений:

Центры обработки данных Учтите, что серверы размещаются в центрах обработки данных, которые охлаждаются. Серверы выделяют тепло и выделяют тепло для защиты оборудования. Блоки A/C не имеют бесконечной детализации. Их эффективность обычно идет с объемом. Поэтому, если я уменьшу количество серверов от 2 до 1, я, возможно, сохранил энергопотребление одного сервера, но, вероятно, не так много в расходах на охлаждение. Но если изменение моей архитектуры позволяет мне вырезать 100 серверов... это большая экономия!

Аппаратные и периферийные устройства Использование самого мощного SW-стека и запуск его на сервере Pentium 4 = глупость;) Самое энергоэффективное программное обеспечение не может компенсировать неэффективное оборудование. Здесь есть один интересный урок: "Пусть ребята из железа беспокоятся о власти". Вы беспокоитесь о том, чтобы получить заявку на рынок. Когда ваше приложение может получать доход, вы всегда можете купить новейший 16-ядерный процессор Core 5 hexa-deca и мгновенно получить свою энергоэффективность;)

Virtualizaton Если ваше приложение имеет низкую громкость, объединение его в виртуальную машину, работающую на многоядерной системе, вероятно, сэкономит вам больше энергии, чем переписывает ее в самый энергоэффективный стек SW и запускает его на автономном сервере.

Время программиста Вам нужны программисты, хорошо осведомленные в "наиболее энергоэффективном" программном стеке. Вы должны подумать, что это правильные инструменты. Программисты используют компьютеры для разработки программного обеспечения, и чем больше времени им нужно разрабатывать (если они ограничены неправильными инструментами), тем больше потребляется. Не говоря уже о том, что вам придется платить за них больше часов. Это обычно отменяет любые проблемы потребления энергии, потому что здесь затраты превышают величины.

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

Ответ 9

Более эффективный код потребляет меньше ресурсов, включая мощность. Java в целом имеет более быструю и эффективную реализацию, поэтому все остальные факторы являются постоянными, Java, вероятно, потребляет меньше энергии, работающей на сервере.

Но все остальные факторы не постоянны. Там не сообщается, какие изменения основываются на вашем решении использовать PHP или Java. Например, Java занимает больше времени для разработки, а это значит, что Java-программисты работают на своих компьютерах дольше, а их использование энергии может превысить ваши сбережения на сервере.

Если вы являетесь Google, Amazon или какой-либо другой компанией, которая каждый день обслуживает буквально миллиарды запросов от тысяч серверов, я буду беспокоиться об этом. В противном случае ваш масштаб недостаточно велик, чтобы делать какие-либо положительные утверждения об энергопотреблении, поэтому любое решение, которое вы принимаете, столь же вероятно будет контрпродуктивным, поскольку оно должно быть продуктивным, потому что невозможно включить все соответствующие факторы.

Соответствующий пример - несколько месяцев назад, когда вокруг ходят слухи, что вы можете сэкономить энергию, установив черный фон рабочего стола. Мысль заключалась в том, что черный = нет света, поэтому вы не использовали столько света. Google (одна из немногих компаний с достаточным энергопотреблением для проведения такого рода исследований продуктивна) провела некоторые эксперименты и провела некоторые исследования, и обнаружила, что ЖК-экраны производят белый свет, несмотря ни на что, и фильтруют его, передавая второй ток через пиксели по-другому. Поэтому, устанавливая пиксель на черный, вы устанавливаете его фильтрацию максимально, фактически используя максимально возможную энергию. Самый энергосберегающий фон рабочего стола (по крайней мере, на ЖК-экране) - это белый фон. Тем не менее, поскольку белые фоны причиняют людям боль, мало кто устанавливает фоны для рабочего стола на белый, и слухи о том, что черные фоны сохраняют энергию, все еще распространены.

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

Ответ 10

Это тот же вопрос, какой язык имеет лучшую производительность. Теперь, для почти каждого проекта, с которым большинство программистов когда-либо контактируют. Как вы пишете систему, намного перевешивает используемые технологии (учитывая, что система спроектирована нормально).

Выбор языка по производительности - это imho для встроенных систем и ученых. Вы выбираете язык в зависимости от того, какую проблему решить, крайне редко, насколько эффективен КП.

Опять же, это то, как вы разрабатываете и записываете систему, которая определяет, насколько она эффективна.

Ответ 11

Очевидно, что современные вычислительные технологии используют гораздо больше ресурсов, чем раньше, и это напрямую приравнивается к потреблению энергии. Как только мы будем использовать простой старый сокет для передачи двоичных данных по сети, и процессор 100 МГц будет обрабатывать его, теперь у нас есть стек программного обеспечения, где данные преобразуются в текст XML, а затем передаются через веб-службу через http по тому же самому socket, и мы задаемся вопросом, почему нам нужен процессор 3Ghz с дисками RAM, чтобы получить достойную производительность:)

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

Современному программированию это не нравится - нажимают на производительность программиста, используют более дешевые программисты и постоянно меняют код (т.е. переписывают его), поэтому код должен быть легко создан (и иногда поддерживается). В результате, чтобы получить лучшее, вам нужно будет скомпрометировать эти факторы. Промышленным стандартным способом это просто смешивать системы в соответствии с их использованием.

В настоящее время максимальная производительность - это код на C/С++, а конечная производительность программиста - это языки сценариев. Итак, идеальным из них является написать основную бизнес-логику на языке script, таком как Python, и использовать его для вызова выделенных "помощников власти", написанных на C/С++. Если вам нужна большая производительность, вы можете написать больше своего кода в базовом C/С++. Если вам нужна более быстрая разработка RAD, напишите больше на языке script.

Мой совет для OP заключается не в том, чтобы переписывать на Java, он может быть лучше в целом, но вы стоите так дорого, что это может не стоить того. Вместо этого возьмите интенсивные бит приложения и перепишите их так же эффективно, как вы можете, и вызовите их из существующего PHP. а затем взгляните на общую архитектуру и уменьшите зависимость неэффективных протоколов и структур данных. Например: если вы замените XML на JSON, вы обнаружите, что у вас есть те же функции, но на долю размера данных и ресурсов, необходимых для анализа и переформатирования данных.

Ответ 12

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

Типичное веб-приложение PHP дублирует много усилий с одного запроса на следующий, просто потому, что среда выполнения PHP (или контекст) не является постоянной для запросов.

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

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