Select Page

Memory footprint von Scripts

by | Feb 28, 2013 | Development

Hin und wieder stellt sich die Frage in welcher Sprache man ein Programm eigentlich schreiben sollte. Neben persönliche Vorlieben, Features und Modellen welche die Sprache unterstützen soll, gilt es aber auch ein Auge auf der Performance zu haben.
Bevor es nun ungezähmt aus dem Wald schallert: “Klar, C, schneller geht’s kaum”, wage ich anzumerken dass auch die Performance in der Schreibgeschwindigkeit zählt, oder der Praktikabilität, usw. Allerdings interessiert mich in diesem Artikel mehr der Speicherverbrauch.
Scriptsprachen welche meistens dynamisch typisieren oder eine Mischform aus dynamischer und statischer Typisierung verwenden brauchen oft mehr Speicher als eigentlich nötig. Daraus würde ich gerne einen Vergleich aus den populärsten Sprachen ziehen.
Basis hierfür ist ein 10.9673 MB großer JSON Dump (sagen wir halt 11MB), mit 100000 Objekten innerhalb eines Arrays. Als Implementierung wurde immer die kleinste gewählt, möglichst streams, keine Zwischenspeicher und keine Ausgabe (Ergebnis wurde natürlich vorher geprüft bevor mit der Zeitnahme begonnen wurde.
Die Messung wurde mit Valgrind durchgeführt (mit dem tool massif) und als Vergleichswert der maximale Peak in Mebibyte gemessen.

chart_time2

Nun, verloren hat ganz klar – und auch leider – PHP. Mit fast 240 Mebibyte aufgeblasenen Heap wundert man sich fast schon was eigentlich drin steht – im Speicher. Ganz gut im Mittelfeld platziert sich der Liebling der Administratoren, Perl – Gut schnell und annehmbarer Speicherverbrauch. Node ist zwar schnell aber nicht weit verbreitet weshalb es eher (auch hier ein klares leider) ein klares Schattendasein führt. Zu C++ ist noch zu sagen das hier alles Dynamisch angelegt und ein großes Framework verwendet wurde, weshalb das Ergebnis kaum zu rechnen ist.
Dieser Test ist natürlich auch in keinster Weise repräsentativ. Werden doch Shared Objects in den Speicher geladen und andere Dinge unternommen welche einen objektiven und ausgeglichenen Vergleich kaum zulassen. Aber man kann doch Stärken und Schwächen erkennen, da es sich zumindest bei den Scriptsprachen um Standardinstallationen aus einem Ubuntu (12.04 LTS) System handelt. Ansonsten folgen noch ein paar hübsche Graphen.


 

Marius Hein
Marius Hein
Head of IT Service Management

Marius Hein ist schon seit 2003 bei NETWAYS. Er hat hier seine Ausbildung zum Fachinformatiker absolviert und viele Jahre in der Softwareentwicklung gearbeitet. Mittlerweile ist er Herr über die interne IT und als Leiter von ITSM zuständig für die technische Schnittmenge der Abteilungen der NETWAYS Gruppe. Wenn er nicht gerade IPv6 IPSec Tunnel bohrt, sitzt er daheim am Schlagzeug und treibt seine Nachbarn in den Wahnsinn.

0 Comments

Submit a Comment

Your email address will not be published. Required fields are marked *

More posts on the topic Development

Mein PHP-Trainingsprojekt

PHP Schulung Vor kurzem haben wir begonnen, eine neue Programmiersprache zu lernen – PHP. In der ersten Woche haben wir mit den Grundlagen wie Variablen, Arrays, Schleifen begonnen und uns schrittweise zu komplizierterer Syntax wie Funktionen, Objekten und Klassen...

check_prometheus ist jetzt öffentlich verfügbar!

Monitoring ist komplex, das wissen wir hier bei NETWAYS leider zu gut. Deswegen laufen in der Infrastruktur auch mal gerne mehrere Tools für die Überwachung. Zwei gern gesehene Kandidaten sind dabei Icinga und Prometheus. Icinga und Prometheus erfüllen...