Suche
Ist es möglich, eine Programmiersprache basierend auf Energie, Zeit und Speicherverbrauch zu wählen?

Java ist eine der energieeffizientesten Sprachen

Jane Elizabeth
https://jaxenter.de/wp-content/uploads/2017/09/shutterstock_395639767.jpg

© Shutterstock/Davizio Phtography

Energieeffizienz ist nicht nur ein Hardwareproblem. Die Wahl der Programmiersprache kann schwerwiegende Auswirkungen auf die Effizienz Ihres Energieverbrauchs haben. Wir tauchen tief in das ein, was eine Programmiersprache energieeffizient macht.

Seit Jahren verbinden wir Leistung mit Verarbeitungszeit. „Wie gut funktioniert es?“ bedeutete „Wie schnell ist es?“ Aber heutzutage haben sich die Dinge geändert. Entwickler, Ingenieure und sogar Verbraucher werden viel tun, um eine starke Belastung der CPU zu vermeiden und ihre Batterien zu schonen. Die Energieeffizienz begann auf der Hardware-Seite, aber jetzt ist sie in der Software-Entwicklung angekommen.

Es tauchen viele Fragen auf, wenn man versucht, die Effizienz einer Programmiersprache zu messen. Zum einen, welche Art von Metrik verwenden sie? Ist eine schnellere Programmsprache energieeffizienter? Ist eine schnellere Programmiersprache gleichzeitig auch eine grünere?

Der Vergleich von Sprachen fällt jedoch schwer. Die Leistung einer Sprache lässt sich durch die Qualität des Compilers oder der virtuellen Maschine verbessern. Ein verbesserter Quellcode ist ebenso entscheidend wie optimierte Bibliotheken.

Ein portugiesisches Forscherteam untersuchte 27 der populärsten Programmiersprachen, um zu sehen, ob es irgendeinen Zusammenhang zwischen Geschwindigkeit und Effizienz gibt.

Lesen Sie mehr: 2039 – Das Jahr in dem Java stirbt? 

Mit Hilfe des Computer Benchmarks Games testete das Forscherteam diese Sprachen, indem es solche Programme mit Hilfe modernster Compiler, virtueller Maschinen, Interpreter und Bibliotheken kompilierte/ausführte. Anschließend analysierten sie die Performance der verschiedenen Implementierungen unter Berücksichtigung von drei Variablen: Ausführungszeit, Speicherverbrauch und Energieverbrauch.

Was Pereira und andere fanden, war nicht ganz überraschend: Geschwindigkeit ist nicht immer gleichbedeutend mit Energieeffizienz. Kompilierte Sprachen wie C, C++, Rust und Ada gehören zu den energieeffizientesten Sprachen auf dem Markt.

Java ist jedoch eine der schnellsten und energieeffizientesten objektorientierten Sprachen. Interpretierte Sprachen wie Perl, Python und Ruby gehören zu den am wenigsten energieeffizienten Sprachen. Wie die Forscher herausgefunden haben, stellt der CPU-basierte Energieverbrauch immer den größten Teil der verbrauchten Energie dar.

Im Durchschnitt benötigten die imperativen Sprachen, wenn sie nach ihrem Programmierparadigma sortiert sind, am wenigsten Speicherplatz, gefolgt von den objektorientierten, funktionalen und schließlich den Skriptsprachen.

Lesen Sie mehr: Programmiersprachen-Rankings: So schneiden Java & Co. aktuell ab

Ist es also möglich, eine Programmiersprache basierend auf Energie, Zeit und Speicherverbrauch zu wählen? Nun, ja. C ist klarer Sieger in allen Kategorien. Wenn Sie sich aber nicht für die Codierung in C interessieren, gibt es einige interessante Alternativen.

Go und Pascal schlagen sich ziemlich schlecht im direkten Leistungsfähigkeitstest, aber sie schneiden besser ab, wenn Sie Sprachen betrachten, die auf Zeit und Speicher oder Energie und Speicher basieren. Für diejenigen, die sich für verbesserte Energie und Speicher interessieren, sind Rust und FORTRAN ebenfalls gute Optionen.

Testen Sie, wie effizient Ihr Code wirklich ist

Die Forscher haben eine großartige Sache bei GitHub, wo sie Ihren Code evaluieren, um zu sehen, wie energieeffizient er ist. Es sind nur drei einfache Schritte.

  1. Erstellen Sie einen Ordner mit dem Namen Ihres Benchmarks, z. B. test-benchmark, innerhalb der Sprache, in der Sie ihn implementiert haben.
  2. Befolgen Sie die Anweisungen im Abschnitt Operationen und füllen Sie das Makefile.
  3. Verwenden Sie das compile_all. pyscript, um zu kompilieren, auszuführen und/oder zu messen, was Sie wollen! Oder führen Sie es selbst mit dem make-Befehl aus.

Was denken Sie? Ändert sich dadurch die Wahl der Programmiersprache? Lassen Sie es uns mit Hilfe der Kommentare unten wissen!

Geschrieben von
Jane Elizabeth
Jane Elizabeth
Jane Elizabeth ist eine Redaktionsassistentin für JAXenter.com
Kommentare
  1. TestP2017-09-19 09:56:12

    Hi,

    da werden aber einige Begriffe merkwürdig vermischt bzw. es werden Sprachen in Kategorien gesteckt, die so gar nicht passen. Zwischen einer imperativen und objektorientierten Sprache zu unterscheiden macht keinen Sinn. Imperativ bedeutet, dass das Programm (seine) Zustände ändert sich der Programmierer oft darum kümmern muss wie ein Problem gelöst wird. Das trifft auf fast alle objektorientierten Sprachen zu, inklusive Java. Zu imperativ wäre eher deklarativ/funktional das Gegenteil. Und zu objektorientiert wäre eher prozedural (Sprachen wie Pascal oder C) ein Unterscheidungsmerkmal.

    Grüße

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.