46 Stimmen

PHP vs. Java - gibt es Unterschiede beim Energieverbrauch?

Ich habe das Gerücht gehört, dass Java weniger Energie verbraucht als PHP und frage mich, ob und wie das stimmt. Ich arbeite derzeit in einem Unternehmen, in dem wir die meisten unserer Anwendungen auf PHP basieren. Der Stromverbrauch war für uns nie ein Problem, aber wir arbeiten an größeren Projekten, bei denen das eine Rolle spielen könnte. Wir lieben PHP für die Webentwicklung und fragen uns, wie sich ein solches Gerücht verbreiten kann und ob es überhaupt wahr ist.

Das Beispiel, das ich gehört habe, war, dass Facebook aus genau diesem Grund zu Java wechselt (ich kann diese Informationen bei Google allerdings nicht finden).

Da einer meiner Kunden mir diese Frage stellt, hätte ich gerne einen Beweis dafür, dass es stimmt.

29voto

Ants Aasma Punkte 50286

Computern ist es ziemlich egal, ob sie Java oder PHP ausführen. Der Stromverbrauch ist so ziemlich derselbe. Die Frage ist dann nur noch eine Frage der Leistung - wenn Sie mehr Anfragen mit einem Server bedienen können, brauchen Sie weniger Server und verbrauchen weniger Strom. Oder, wenn Sie keine webbasierten Anwendungen ausführen, können Sie Ihre Anfragen schneller bearbeiten und mehr Zeit im Leerlauf verbringen, was weniger Strom verbraucht.

Bei reinem Java und reinem PHP ist Java als statisch typisierte JIT-Sprache natürlich schneller. Die Frage ist eher, welche Sprache Sie mit den Ihnen zur Verfügung stehenden Teammitgliedern und dem Entwicklungsaufwand schneller machen können.

Meiner Meinung nach ist es am besten, Sprachen zu mischen, bestehende Java-basierte Infrastruktur-Tools wie Terracotta zu verwenden, um die leistungsrelevanten Teile zu erstellen, und etwas Flinkeres, um komplexe, aber nicht so schwere Geschäfts- und Präsentationslogik zu erstellen.

20voto

Vinko Vrsalovic Punkte 252104

Ich bezweifle wirklich, dass es sich nur um ein sprachliches Problem handelt.

Die fraglichen Plattformen weisen so viele Unterschiede auf, dass ein allgemeiner Vergleich nicht möglich ist. Um einige Punkte der Variabilität zu nennen.

  • Servlet-Container für Java (Tomcat, Glassfish, Websphere, Jetty, ...)
  • Webserver für PHP (Apache, IIS, lighttpd, nginx, ...)
  • Opcode-Zwischenspeicher für PHP
  • Verwendete Bibliotheken und Frameworks
  • Betriebssysteme
  • Betroffene Festplatten
  • Kühlung
  • Algorithmen in der Anwendung selbst

Ich bezweifle wirklich, dass man so viele Variablen in einer nützlichen Metrik isolieren kann. Man kann höchstens zwei gleichwertige Anwendungen (unter Berücksichtigung aller Möglichkeiten der Plattform) auswählen, die die gleiche Hardware verwenden, und sie vergleichen. Dann verbessern Sie die schlechtere Anwendung, bis sie die bessere übertrifft. Die richtige Messung wäre sowohl die Watt pro Stunde als auch die Anfragen pro Sekunde, denke ich.

Was ist vermerkt in Antwort der Ameisen (upvote him) ist jedoch der entscheidende Punkt: die leistungsstärkere Plattform wird immer energieeffizienter sein, wenn genügend Bedarf besteht Denn er kann die gleiche Anzahl von Anfragen mit weniger Hardware bewältigen.

Welche Plattform die bessere ist, hängt jedoch nicht nur von der Sprache ab, sondern auch von den oben genannten Faktoren (und einigen weiteren).

8voto

duffymo Punkte 298898

Ich war von dieser Frage überrascht, bis ich eine Google-Suche durchführte, die Folgendes ergab auf. Das ist ein ernstes Problem, an das ich nicht gedacht hätte.

Jetzt, wo ich darüber nachdenke, denke ich, dass es eine Frage ist, wer die Stromrechnung bezahlt. Bei der Java-Strategie von Sun ging es um den Verkauf von Servern: Big Iron für das Backend, Thin Clients für das Front-End.

Vielleicht verlagern Technologien wie Flex einen größeren Teil der Arbeit zurück zum Kunden und überlassen ihm einen größeren Anteil an der Stromrechnung.

Aber es würde mich überraschen, wenn es eine Rangliste der Sprachen nach Energieverbrauch gäbe.

Eine sehr interessante Frage. Ich stimme für sie.

Das ist ein faszinierendes Problem. Wäre es nicht interessant, eine Anwendung in einer Reihe von Sprachen zu schreiben, sie auf identischer Hardware einzusetzen und den Stromverbrauch zu messen? Das würde ich sehr gerne sehen.

Wenn Sie wirklich verrückt sind, wie wäre es dann mit einem Leistungsüberwachungs-Tool, das Ihnen nicht nur anzeigt, wo Speicher und CPU in jedem Teil Ihrer Anwendung verbraucht wurden, sondern auch, wo der meiste Strom verbraucht wurde?

Jetzt wünschte ich, ich könnte diese Frage noch einmal wählen.

4voto

Mark Rushakoff Punkte 236626

Wie bei vielen vergleichenden Fragen in diesem Bereich müssen Sie wahrscheinlich ein Benchmarking durchführen, um festzustellen, ob dies wirklich zutrifft.

lesswatts.org bietet einige Informationen zur Energieverwaltung von Anwendungen sowie verschiedene andere Aspekte des Stromverbrauchs von Linux-Systemen. Nebenbei bemerkt, scheinen sie PHP zu verwenden, was an sich schon etwas wert sein könnte :)

Sie wiederholen immer wieder, dass man die PowerTOP um herauszufinden, welche Anwendungen den größten Stromverbrauch verursachen, und Sie können auf dem Screenshot sehen, dass sie zumindest das Aufwachen aus dem Leerlauf überprüfen.


Die meiste Zeit ist ein Webserver im Leerlauf, dann "bedient" er für einen sehr kurzen Moment, dann wartet er wieder auf die nächste Verbindung, um zu bedienen. In dieser Hinsicht würde PHP nur sehr wenig zum gesamten Prozess beitragen: nur den Teil des Servings. Ich frage mich daher, ob der eigentliche Benchmark ein Vergleich zwischen einem bestimmten Java-basierten Webserver und Apache/PHP war, der ähnliche Seiten bedient. Wenn das der Fall war, ist es kein wirklich fairer Vergleich zwischen PHP und Java - jeder der beiden Server ist in der Regel nur für Millisekunden aktiv, wenn er eine Seite bedient. Ich würde denken, dass der eigentliche Webserver, derjenige, der Verbindungen auswählt oder abfragt, derjenige ist, der am meisten Strom verbraucht.

3voto

Dimitar Dimitrov Punkte 15634

Meinen Sie mit Energieverbrauch den Stromverbrauch in Watt?

Ich bin mir nicht zu 100 % sicher, aber selbst wenn das stimmt, denke ich, dass dies mit der Optimierung eines Teils Ihres Codes vergleichbar ist, der in 0,01 % der Laufzeit Ihres Programms ausgeführt wird.

Die Probleme, die durch die Umstellung verursacht werden (Wechsel der Produktions-/Veröffentlichungsplattformen, Verlust der Lernkurve, Kosten für neue Unternehmenssoftware usw.), werden ziemlich drastisch sein. Ich kann mir nicht vorstellen, dass eine so wichtige Entscheidung getroffen wird, es sei denn nach einer ernsthaften und unternehmensspezifischen Geschäftsanalyse und den entsprechenden Ergebnissen daraus.

Dies dürfte jedoch eine interessante Diskussion auslösen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X