Wieviel mehr Strom verbrauchen andere Programmiersprachen als C(++) für die gleiche Aufgabe?
Im Gegensatz zu meinen Vorrednern halte ich das hier für eine interessante Frage. Und ich kann sie gern beantworten.
Zufällig habe ich zwei Rechner hier, die über Messgeräte an die Stromversorgung angeschlossen sind. Das eine ist ein Raspberry Pi 3 (4 Core), das andere ein normaler Desktop-PC mit einem AMD FX-8350 (8 Core ) und einer NVidia GeForce GTX 960. Beide Systeme sind bis an die thermisch vernünftige Leistungsgrenze übertaktet im normalen Rahmen.
Der PC hat vier Platten, eine SSD und drei mittelalte 3.5" Laufwerke üblicher Bauart. Der ist nicht besonders hungrig, aber auch nicht "grün", also beide Systeme eignen sich meiner Meinung nach recht gut, um diese Messung durch zu führen. Beide Rechner sind momentan ohne Last.
Der Raspberry Pi verbraucht unter einem mA, also unter einem Watt an Leistung, was auf meinem Messgerät mit 0 mA und 0 W angezeigt wird, ich vermute der wahre Wert liegt bei knapp unter 1 mA oder 0.5 W, damit keine Divisionen durch Null auftauchen in der folgenden Rechnung, der PC verbraucht 357 mA oder 75.1 W, sobald ich für einen Moment die Finger vom Quora-Editor lasse, der schwachsinnig viel CPU frisst und zu merklichem Energieverbrauch meines Computers beiträgt, anders als etwa VIM, den ich nicht messen kann.
Es gibt unter Linux ein Programm, das sich "stress" nennt und das man einfach mit "sudo apt install stress" installieren kann und damit werde ich im folgenden die Stresstests machen. Der erste Stresstest ist unter 100% auf allen Cores.
in Folge, Leer, 100% CPU
Pi3, 0.5 W, 6, +5.5W (26 mA), +1100%
AMD, 75.1, 213, +137.9W, +180%
Wir können also davon ausgehen, dass die Last auf den CPU tatsächlich relevante Auswirkungen auf den Stromverbrauch eines Computers hat und je schneller wir eine Aufgabe lösen, desto weniger Strom wird verbraucht. Ich habe auch Memory und IO getestet, aber die Werte waren zu inkonsistent, um sie hier zu verwenden. Ebenfalls habe ich die Last auf GPU ignoriert, gleichfalls das herunter Regeln durch thermischen Schutz, was bei beiden Prozessoren nach einer Weile passiert, da es für diese Zwecke nicht relevant ist.
Die Effizienz der verschiedenen Programmiersprachen kann man auf einer Seite wie etwa dem Computer Benchmark Game ersehen: Which programming language is fastest?
Im folgenden nehme ich für Lua nicht den blödsinnigen dort vorhandenen Test vom langsamen Lua 5.3 (nur weil es modern ist), sondern den effizienten LuaJIT 2.1 beta, den ich selbst getestet habe.
Die Speed ist durchschnittlich etwa so, (Sprache, Faktor, C ist Referenz):
C 1, LuaJIT 1.5, Java 2, Go 3, Typescript 3, Dart 4, NodeJS 5, PHP 15, Python3 28, Ruby 30
Entsprechend kann man folgende Aussage machen. Da die meisten Server ihre Hauptleistung mittels PHP oder Python verbringen, läßt sich durch Verwendung von effizienten Sprachen, wie beispielsweise LuaJIT mittels Mako/Barracuda
oder Modulen, die direkt in C geschrieben werden, der Stromverbrauch von Rechenzentren zwischen Faktor 3*15=45 (AMD, PHP) und Faktor 12*28=336 herunter bringen.
Rechenzentren in Deutschland verbrauchen im Jahr rund 5 Milliarden kWh/a
für die Cores allein. Bei einer Kilowattstunde von 20 ct sind das 1 Milliarde Euro. Die volkswirtschaftliche Einsparung liegt also durch die Verwendung von C, wenn wir annehmen dass sie alle diese jämmerlichen Sprachen wie PHP und Python dort benutzen, was ich aus Erfahrung einfach mal so annehme, bei theoretischen Kosten runter auf rund 22 Mio bis runter auf 3 Millionen Euro statt dessen und etwa den 1.5 fachen durch die Verwendung von LuaJIT/Mako, so wie die Chinesen es machen auf Alibaba und den anderen großen Chinaservern.
Die konsequente Schlussfolgerung hier wäre, dass man das Benutzen von uneffizienten Sprachen in Rechenzentren unterbindet. Der Einsatz von Scriptsprachen ist sinnvoll, aber da bietet sich zur Zeit ausschließlich LuaJIT an, Java hat weitere hohe Kosten auf die Infrastruktur, die beim obigen Benchmarks nicht erfasst werden.
Das ist alles ein educated guess nach der Fermi-Methode
, aber ich denke, ich liege in den Größenordnungen richtig. Leider scheine ich der letzte zu sein in diesem Land, der so denkt. Ich nehme gern sehr viel Geld für meine Beratung an. Diese Rechnung hier würde, wenn man dem Ratschlag folgt, Deutschland etwa 900 Millionen Euro an Strom- und damit Energiekosten einsparen.
Und damit, denke ich, hätte ich meine Existenzberechtigung gerechtfertigt. Aber unsere Leute rennen lieber jeden Freitag auf die Straße und protestieren, anstatt sich auf den Hosenboden zu setzen, hart zu arbeiten und sich die Mühe zu machen vernünftige Sprachen wie C oder LuaJIT zu erlernen. Und jetten dann gleich nach der Klimademo nach Thailand für den Retreat. Yay. Als persönliche Bemerkung am Schuss: ich könnte so kotzen. Das ist so verlogen und ideologisch, es ist ein Kult. Und ernsthaft hat keine Sau in diesem Land Interesse daran, irgendwas für die Stromersparnis zu tun. Denn mir geht es nicht primär um weniger CO2, ich bin aus wissenschaftlicher Überzeugung sehr skeptisch dem "menschengemachten Klimawandel" gegenüber und habe dafür gute Gründe, mir geht es um echte Verluste von Wohlstand für alle durch diesen Unsinn, mit noch höheren Sekundärkosten durch Verlust von Wettbewerbsfähigkeit und einer völlig verkorksten Bildungspolitik. Es geht diesen Leuten nur um ein persönliches Gutgefühl, das ist alles. Sie lernen trotzdem Python und PHP, fahren SUV und jetten nach Australien für ein Wochenende, weil das Wetter da grad so schön ist, weil sie faul und träge sind und bloß nicht neue Wege gehen, die Konsequenzen tragen sollen gefälligst die anderen. Aber das nur am Rande. Schöne neue Welt. Wenn ich meine Meinung dazu auf einen Button bringen soll? Gern.
Python tötet Menschen
Im übrigen lehne ich Lua 5.3 aus dem selben Grund ab, weshalb ich Python ablehne (gut, bei Python kommt noch das Paradigma oben drauf und der dogmatische Bullshit). Ich breche hier eine Lanze für LuaJIT und C, nicht für ein Prinzip einer Sprache, sondern für real erbrachte und gemessene Leistungen, für Zahlen unter dem Strich und ich bin ein klarer Feind von Ideologie und dem, wie es in der Informatik genannt wird: Paradigma. Als Wissenschaftler und Ingenieure sind wir den Zahlen und Fakten verpflichtet und nicht dem Wohlfühl-Gefühl und der Bequemlichkeit und daran sollten wir uns wieder erinnern, seit der Mondlandung ist das Stück für Stück erodiert. LuaJIT
kommt übrigens aus Deutschland, ein Mann in München, Michael Pall hat es entwickelt und geschrieben. Aber wir sind uns mal wieder zu fein, unsere eigenen Technologien zu benutzen. Wir überlassen das diesmal den Chinesen.
Ich hoffe, ich konnte helfen.