Es gibt viele vergleichende Studien, die online verfügbar sind, wenn es um die Laufzeitleistung von Anwendungen geht, die mit der einen oder anderen Sprache erstellt wurden. Einige werden von Unternehmen angetrieben, andere von akademischen, andere nur von persönlichen Versuchsberichten.
Wir erhalten auch einen anständigen Anteil an vergleichenden Studien zu den Nebenwirkungen einer Programmiersprache und ihrer Werkzeuge, wie zum Beispiel:
- Bauzeiten,
- Wahrscheinlichkeit der Erkennung von Fehlern nach der Produktion,
- Ausdruckskraft,
- usw...
In letzter Zeit wurde ich jedoch mehr und mehr vom Speicherverbrauch meiner Programme überfordert. Dies könnte auf die Tatsache zurückzuführen sein, dass wir, während Moores Gesetz für rohe Leistung auf unserer Seite steht, erkannt haben, dass andere Engpässe wichtiger sind. Das, und ich neige nicht dazu, meine Hardware von Zeit zu Zeit zu aktualisieren, und ich habe einige "alte" (lesen Sie 2005-2006 3,6 GHz Pentium 4 mit 4 GB RAM), die heutzutage kaum für große Anwendungen ohne geeignet sind Ich muss mir große Mühe geben, um jeden Saft herauszuholen (Auswahl des Betriebssystems, der Benutzeroberfläche, Optimierung der Dienste und Dämonen, Auswahl der Anwendungen, die für eine oder andere Aufgaben verwendet werden sollen ...). Ganz ehrlich, manchmal schalte ich ein top
oder procexp
weine beim Anblick der Erinnerung, die von den unschuldigsten Programmen verwendet wird.
Ich kann dies angehen, indem ich mich weiter in die oben aufgeführte Richtung dränge und im Wesentlichen versuche, mich und die von mir verwendeten Programme einzuschränken (ich glaube, ich liebe Cli-Programme aus diesem Grund sehr), aber ich kann auch nicht anders, als nachzudenken dass wir es vielleicht falsch machen.
Moderne Werkzeuge für moderne Bedürfnisse
Natürlich sind übergeordnete Sprachen wohl besser und rechtfertigen ihren Wert an Eigengewicht. Einige Designentscheidungen wurden zu dieser Zeit in vielen Werkzeugketten aus guten (oder angeblich gut gemeinten) Gründen getroffen. Gemeinsame Bibliotheken, Speichermodelle, Vorprozessoren, Typsysteme usw. Aber einige sind mit unserer modernen Hardware möglicherweise rentabler als andere, und ich wäre gespannt darauf, einige ernsthafte Studien zu diesem Thema zu lesen.
Meine Frage ist also, gibt es einen Anhänger für das Benchmarks-Spiel und andere, die sich auf einen Vergleich des Basis-Laufzeit-Speicherverbrauchs der Sprachen konzentrieren?
Und noch weiter, gibt es einige Studien, die dies mit anderen Parametern vergleichen (ähnlich wie in diesem Artikel , zum Beispiel für andere Kriterien, die ebenfalls auf dem Benchmarks-Spiel basieren )?
How much memory consumption makes you weep?
30 MB für einen inaktiven Chrome-Tab ohne Erweiterungen, 100 MB für ATIs CCC, sogar 11 MB für ein inaktives Googletalk-Plugin oder 23 MB für einen inaktiven Druckertreiber. Diese Dinge und vieles mehr. Das Chrombeispiel ist etwas außerhalb des Parks, da es ein komplexeres Beispiel ist, aber die anderen überraschen mich schon ziemlich.Antworten:
Ich habe einige Teilinformationen gefunden, daher werde ich beginnen, meine Ergebnisse in meiner eigenen Antwort zusammenzufassen. Bitte lassen Sie sich dadurch nicht davon abhalten, Ihre eigenen Antworten beizutragen (oder diese zu bearbeiten).
Bestehende Literatur:
Ein empirischer Vergleich von 7 Programmiersprachen - Prechelt (2000) [ PDF ]
Ein bisschen veraltet, deckt aber einen Teil des Materials ab, das mich interessiert, und gibt einen Überblick über die Verwendung und Ausdruckskraft des Laufzeitspeichers. Die Ergebnisse mögen jetzt sehr unterschiedlich sein, aber es ist ein interessanter Anfang.
Geschwindigkeit, Größe und Zuverlässigkeit der Programmiersprachen - Marceau (2009) [ Blog ]
Verwendeter Code, Verwendete Zeit Formen aus dem Benchmark-Spiel [ u32 , u32q , u64 , u64q ]
Obwohl es sich nicht um den Speicherbedarf zur Laufzeit handelt, ist Marceaus Arbeit mehr oder weniger die Art von Referenz oder empirischer Studie, die ich in Bezug auf Inhalt und Qualität für diese Kriterien finden würde. Ein gutes Beispiel für das, wonach ich suche, nur für verschiedene Metriken. Der zweite Artikel ist ein Follow-up auf der Benchmarks Game-Website und wurde kurz nach Marceaus Arbeit veröffentlicht (und verweist darauf), mit neueren Bildschirmen und mehr Sprachen, jedoch immer noch ohne Details zum Laufzeitspeicher. Jedes Diagramm auf diesen Seiten führt dann zu einem Vergleich von Sprache zu Sprache, die jedoch Speicherinformationen auf hoher Ebene liefern.
quelle
Dies beantwortet die Frage nicht per say, ändert aber möglicherweise die Perspektive ein wenig. Ich denke an das Protokoll aus dem Chat, um den Ton für diesen Antwortkommentar festzulegen, der sicherlich Gegenstand vieler Abstimmungen sein wird.
Es gibt Menschen, Hardwareanbieter, Werkzeuganbieter und Programmierer, die sich Sorgen um die Effizienz machen. Vorerst wird es für sie und uns alle ein wachsendes Problem sein. Diese Bedenken wurzeln in mobilen Geräten, insbesondere in den leistungsstarken Monstern mit Batteriefressern, den größten Bildschirmen und den stärksten Radios.
Um noch einen Schritt zurückzutreten, ein Teil des Grundes, warum wir uns in der heutigen Situation befinden, mit vergleichsweise massiven Frameworks und einer leichten Missachtung der allgemeinen Effizienz, die über die Hardwareverbesserungen hinausgeht, ist das Erbe. Die Kompatibilität mit Legacy-Systemen verankert uns neben der Kompatibilität auch die Kompatibilität. Es ist nicht so sehr die Schuld einer Laufzeit auf oberster Ebene, da sie im Wesentlichen dieselbe Laufzeit haben, die in einer anderen Betriebsumgebung (z. B. Xbox, Windows Mobile Pre 7/8 / Surface, Java Micro Framework) recht effizient und performant wirkt , usw).
Vergleichen Sie den Grad der Kompatibilität eines Desktops mit seiner Legacy-Software mit dem Grad der Kompatibilität eines Mobilgeräts.
Bei den Mobilgeräten bemühen sich die Gerätehersteller um eine gewisse Kompatibilität, haben die Kompatibilität jedoch nicht zu einem zentralen Fundament gemacht. Wenn Sie die Wahl haben, weiterhin Kompatibilität bereitzustellen und das Design des mobilen Systems voranzutreiben, bewegt sich das mobile System vorwärts.
Für Desktops scheint das Gegenteil der Fall zu sein. Wenn eine signifikante bahnbrechende Änderung die Vermarkter oder Early Adopters fälschlicherweise trifft, werden die erforderlichen Funktionen und das erforderliche Redesign um ein Vielfaches in den Hinterraum verschoben. Irgendwann erinnere ich mich an Gerüchte, wonach wir als Windows-Benutzer ein völlig und dramatisch neues Dateisystem mit Windows XP finden würden, dann in Vista, später das gleiche für Seven und schließlich wieder in Eight, aber nein, seitdem nur schrittweise verbessert haben wir es zum ersten Mal unter Windows 2000 gesehen? Das neue Dateisystem hat lange rumgesessen, wurde verschrottet, und wie auch immer Gerüchte die Geschichte danach bestimmen, kann ich nicht sagen. Das ist wahrscheinlich der größte bekannte Fall, aber ich bin mir sicher, dass dies nicht der einzige große Fall ist.
Selbst mit den neuesten Tablets und mobilen Betriebssystemen ist Microsoft, das einst den Markt geprägt hat, jetzt in einem Death Match nicht nur mit Verbrauchern, sondern auch mit einem Schatten seiner selbst aus der Desktop-Abteilung verflochten. Das Tablet musste eine signifikante Interoperabilität mit dem Desktop-Gegenstück aufweisen. Nein, es konnte aufgrund von Architekturunterschieden nicht perfekt damit spielen, aber auch aufgrund der archaischen Natur der Desktop-Grundlagen hat es erhebliche Opfer gebracht.
Windows ist sicherlich das leichte Ziel für jede Art von Kritik in dieser Situation, aber andere Plattformen sind alles andere als "sündenfrei". Im Linux-Ökosystem lauern viele Relikte, von denen ich sicher bin, dass sie große Bestürzung für systematische Verbesserungen hervorrufen.
Die Wirtschaft spielt eine große Rolle in dieser Gleichung; Wie wir unsere Computer und Anwendungen auf der einen Seite finanzieren und wie sie auf der anderen Seite finanziert werden, folgt erstaunlich unterschiedlichen Mustern. Während Wintel einst die Veralterung stark beeinflusste, haben Apple und Google daraus einen nahezu strengen Zeitplan gemacht. Dies ist weiter vom Kurs entfernt, als ich beabsichtigt hatte, also werde ich gehen, wie es sitzt, und die Leser es von dort nehmen lassen.
Wenn große Anbieter ihre Veralterungs- und Preismodelle ändern, können sie beginnen, größere Änderungen mit einer gleichmäßigeren Geschwindigkeit vorzunehmen. Die Frameworks der obersten Ebene, die von den Sprachen höchster Ordnung gesteuert werden, werden in gewisser Weise schrumpfen, da sie ihre Aufgabe auf hoher Ebene mit einer geringeren Effizienz wie auf niedrigerer Ebene erfüllen können, da die ineffiziente Zwischenkompatibilität und die Ebenen auf niedriger Ebene dies tun drastisch reduziert werden, wenn nicht beseitigt.
quelle