Ist eine langsamere Leistung von Programmiersprachen wirklich eine schlechte Sache? [geschlossen]

18

So sehe ich das.

Es gibt Maschinencode und alles, was Computer brauchen, um etwas auszuführen. Computer interessieren sich nicht für Programmiersprachen. Es ist ihnen egal, ob der Maschinencode von Perl, Python oder PHP stammt. Programmiersprachen bedienen keine Computer. Sie dienen Programmierern.

Einige Programmiersprachen laufen langsamer als andere, aber das muss nicht unbedingt so sein, weil mit ihnen etwas nicht stimmt. In vielen Fällen liegt es daran, dass sie mehr Dinge tun, die Programmierer sonst tun müssten (dh Speicherverwaltung), und wenn sie diese Dinge tun, sind sie besser in dem, was sie tun sollen - sie dienen Programmierern.

Ist eine langsamere Leistung der Programmiersprachen wirklich eine schlechte Sache?

Emanuil Rusev
quelle
22
langsamer wie? Kompilierzeit, Laufzeit, Schreibzeit, eine andere Metrik?
Matt Ellen
1
Ich möchte nur darauf hinweisen, dass schnelle Computer und Compiler, die eine effiziente Maschinensprache erzeugen, offensichtlich gut sind, außer dass sie es Programmierern ermöglichen, viel fauler zu sein. Wenn Produkte Leistungsprobleme haben, liegt dies häufig an der Annahme, dass bestimmte Dinge "schnell" sind, z. B. Speicherverwaltung und Benachrichtigungen.
Mike Dunlavey
5
@Mike: Alternativ dazu laufen Programme langsam, weil Jeff kürzlich in seinem Blog zusammengefasst hat: "Algorithmen sind für Leute, die nicht wissen, wie man RAM kauft". Wenn das Programm mit kubischer Zeit und nicht mit O (N log n) ausgeführt wird, spielt die Computerleistung bei großen Problemen keine Rolle.
David Thornley
2
@David: Wir können nicht mehr als 512 GB RAM auf unserem Server haben, daher müssen wir jetzt bessere Algorithmen schreiben.
JBRWilkinson
2
Kommt darauf an, wo die Engpässe sind. Wenn das Programm 99,9% der Zeit auf E / A wartet, spielt es keine Rolle, ob das Programm selbst 10-mal langsamer ist als in handgefertigter Ausführung.

Antworten:

50

Ich denke nicht, dass es automatisch schlecht ist. Python ist langsamer als C ++, aber wenn beide schnell genug sind , ist Python möglicherweise die beste Wahl für das jeweilige Problem, auch wenn es langsamer ist .

Es ist immer ein Kompromiss. Für kleine einmalige Aufgaben ist es viel schneller, ein Python-Skript zu schreiben als für eine C ++ - App, die dasselbe tut (das typische Beispiel für mich wäre eine Art Batch-Textverarbeitung oder das Durchgehen eines Verzeichnisbaums und das Bearbeiten der Dateien). und es ist mir egal, ob es 10 ms oder 1000 ms dauert, obwohl es 100x langsamer ist, weil ich die Hälfte der Zeit zum Schreiben und Testen brauche.

Natürlich wäre es schön, wenn Python so schnell wie C ++ wäre. In diesem Sinne stimme ich Ihrer Aussage zu, dass "slow = bad". Aber dann habe ich lieber eine mächtige Sprache, die so schnell läuft, wie ich will, indem ich einige Dinge nicht tue (z. B. die Überprüfung der Array-Grenzen auf unformatierte Arrays), solange ich entscheiden kann, wann ich diesen Kompromiss eingehen soll (z. B. mit std: :Vektor).

ggambett
quelle
Ich habe nicht gesagt, dass "langsam = schlecht". Trotzdem vielen Dank für Ihre Meinung.
Emanuil Rusev
9
+1 'schnell genug' Langsam ist schlecht, wenn eine Implementierung 'zu langsam / nicht schnell genug' ist. Zu jedem anderen Zeitpunkt spielt es keine Rolle.
Kirk Broadhurst
4
+1 'schnell genug'. Je nachdem, was Sie tun, ist die Zeit des Programmierers möglicherweise VIEL mehr wert als die potenzielle Einsparung an Ausführungszeit.
Jonas
3
@Jonas: Es ist fast nie der Fall, es ist nur so, dass Sie das Gehalt des Programmierers sehen; Sie sehen nicht, wie die Benutzer frustriert den Kopf hängen, während die App schreit: "Komm schon, wie schwer ist das, du Haufen Mist-Software". Wenn sie die Gesamtbetriebskosten für langsame und schnelle Software veröffentlichen, werden Ihre Prioritäten sofort geändert.
gbjbaanb
1
@mcmcc: Ich habe dort nicht über Sprachen gesprochen, sondern über die Benutzererfahrung. Wenn Sie auf eine Schaltfläche klicken, muss sofort etwas passieren. Wenn Sie eine Berechnung starten, ist es in Ordnung, wenn es eine Weile dauert, solange es eine nützliche Fortschrittsanzeige gibt.
Jonas
18

Ziemlich einfach - langsam zu sein ist eine schlechte Sache

wenn das Programm ein bestimmtes Leistungsniveau erfordert

denn ohne diese leistung erfüllen sie nicht die anforderungen.

Dies kann alles sein, von einer Geschäftsanwendung, die Abfragen in akzeptabler Zeit verarbeiten muss, bis hin zu einem Spiel, das zu jedem Zeitpunkt viele Informationen auf dem Bildschirm anzeigen muss. Wenn das Programm nicht schnell genug ist, funktioniert es einfach nicht .

Kirk Broadhurst
quelle
2
..und oft sind die Anforderungen in einer Art "mehr als X Sekunden, um eine Seite abzurufen, veranlasst den durchschnittlichen Website-Benutzer, stattdessen auf eine andere Website zu wechseln"
JBRWilkinson
1
@ JBRWilkinson ja, oder wenn das System zu langsam ist, werden plötzlich neue Leistungsanforderungen angezeigt;)
Kirk Broadhurst
12

Betrachten Sie es so: Computer sind dumm . Sie folgen trampelnd den Anweisungen, denen jeder Idiot mit einem Triggertisch folgen könnte. Sie bestehen hartnäckig darauf, das zu tun, was Sie gesagt haben, anstatt das, was Sie gemeint haben. Keine Spur von Selbststeuerung oder Intuition. Es ist schrecklich.

Das Eine, was ein Computer braucht, ist, dass er schnell ist. Ja wirklich! Ein Kopf mit einem Aktenschrank könnte die gleiche Aufgabe wie eine Datenbank übernehmen. Ein Typ, der eine Druckmaschine ankurbelt, könnte das tun, was Apache tut. Ernst! Und sie HABEN es tatsächlich Hunderte und Hunderte von Jahren lang getan. Warum ein Computer für ALLES gut ist, ist seine Geschwindigkeit.

Eine Programmiersprache, die (im Vergleich zu anderen Sprachen) nicht ausgenutzt wird, hat also nicht den EINZIGEN Vorteil, Computer zu verwenden.

Dan Ray
quelle
13
Sie vermissen einen wichtigen Punkt : Computer sind dumm, schnell und vorhersehbar , wohingegen erratum humanum est. In vielen Fällen ist diese Vorhersehbarkeit viel wichtiger als eine bloße Geschwindigkeit.
SK-logic
5
Jede Programmiersprache nutzt die Geschwindigkeit des Computers aus. Python auf einem der ursprünglichen OLPC-Computer erledigt die Dinge viel schneller als ich von Hand kann. Denken Sie daran, dass mein aktueller Laptop (der vor zwei Jahren gekauft wurde und damals noch nicht auf dem neuesten Stand war) ungefähr hunderttausend- bis millionenfach leistungsstärker ist als mein erster Heimcomputer.
David Thornley
4
Ganz zu schweigen davon, dass ein Computer viel Energie verbraucht (insbesondere Server) und dass der Energieverbrauch (die grüne Technologie) als bedenklich empfunden wird und dass ein schnelleres Programm in der Regel mehr Energie verbraucht als ein langsameres Programm, so dass zählt (vor allem auf den Servern, die viel verbrauchen)
Coyote21
4
@ SK-logic Die Vorhersehbarkeit von Computern ist weit überbewertet. Wie Joseph Weizenbaum sehr gut hervorhob, werden große Systeme in der Regel so kompliziert, dass sie in keiner Weise vorhersehbar sind und niemand in der Lage ist, das Ergebnis einer bestimmten Ausführung VORHERSAGEN zu können. Es wird eine Frage des Glaubens oder der Hoffnung. Sie können nicht formal nachweisen, dass ein Programm immer das tut, was Sie beabsichtigt haben (daher ist es nicht vorhersehbar).
Omar Kohl
2
Wenn jedoch die Geschwindigkeit (der Ausführung) das ultimative Ziel ist, warum schreiben wir dann unsere Programme nicht alle in Maschinencode?
Emanuil Rusev
5

Eine Programmiersprache kann sehr hoch sein, "viel tun", aber trotzdem sehr schnell. OCaml ist eine höhere Programmiersprache als PHP, erzeugt jedoch einen Code, der fast so schnell wie C ist. Javascript ist so dynamisch wie PHP, kann jedoch sehr schnell ausgeführt werden. Es geht also hauptsächlich um eine Sprachimplementierung, nicht um ein Design. Dynamische Sprachen sind schwerer zu implementieren, aber nicht unmöglich.

SK-Logik
quelle
Denken Sie, dass Sprachen, die als langsam (in Bezug auf die Ausführung) angesehen werden, wie PHP, implementiert werden können, um schneller ausgeführt zu werden?
Emanuil Rusev
1
Zend Optimizer jemand?
user281377
Lassen Sie mich dies anders fragen - was macht die Implementierung von PHP langsam?
Emanuil Rusev
6
Ja, es kann besser implementiert werden. Es ist sehr aufwändig - eine abstrakte Interpretation, um beispielsweise dynamische Typen zu spezialisieren, ist ziemlich knifflig und noch nicht gut erforscht. Eine statische Sprache lässt sich viel einfacher in einen hocheffizienten Code übersetzen. PHP ist also hauptsächlich deshalb langsam, weil es dynamisch ist. Und ursprünglich hatte es eine sehr schlechte und unprofessionelle Implementierung sowie viele andere Skriptsprachen.
SK-logic
Der von Facebook gestartete HipHop-Compiler kann PHP in C ++ - Code übersetzen und ist daher sehr schnell.
JBRWilkinson
3

Die Geschwindigkeit kann in Bezug auf Laufzeit, anfängliche Entwicklungszeit und Wartungszeit (Zeit, die benötigt wird, um Probleme / Fehler zu beheben und neuen Code zu erstellen und bereitzustellen) gemessen werden.

Skriptsprachen haben im Allgemeinen eine langsamere Laufzeit, aber eine schnellere Wartungszeit, da Sie häufig eine schnelle Änderung vornehmen und bereitstellen können, ohne ein gesamtes System neu erstellen zu müssen, und manchmal sogar, ohne anzuhalten und neu zu starten.

Daher ist viel eine Balance, die von der Geschwindigkeit abhängt, die Sie benötigen.

Der Kontext ist auch wichtig. Das Laden Ihrer Erstkonfiguration in 0,5 Sekunden anstelle von 0,1 Sekunden ist keine große Sache, aber zur Laufzeit kann die Ausführung einer Abfrage in 0,5 Sekunden anstelle von 0,1 Sekunden eine große Sache sein, wenn 100 Abfragen verarbeitet werden müssen, und somit in 50 Sekunden statt 10.

Goldesel
quelle
100 ms sind in der Benutzerwahrnehmung praktisch augenblicklich. 500ms ist recht auffällig. Wenn der Benutzer Abfragen durchführt, ist dies ein spürbarer Unterschied im Workflow.
David Thornley
3

Einfach - Kunden lieben schnelle Software. Tatsächlich besteht der gesamte Zweck von Computern darin, schnell zu rechnen.

Nemanja Trifunovic
quelle
11
eigentlich falsch. Kunden lieben Software, die den Anforderungen und dem Budget entspricht. Es ist ihnen gleichgültig, ob ein Bildschirm in 19 Millisekunden statt in 15 erstellt wird, da sie es nie bemerken (wenn es in 15 Sekunden erstellt wird, ist das etwas anderes). Es ist ihnen auch egal, ob Sie eine "schnelle Sprache" verwenden, sie möchten nur etwas, das den Spezifikationen und dem Budget entspricht.
22.
4
19 ms vs. 15 ms machen keinen Unterschied, aber 500 ms vs. 300 ms machen definitiv einen Unterschied zwischen einem erfolgreichen Produkt und einem Fehler.
Nemanja Trifunovic
2
+1 "Kunden lieben Software, die den Anforderungen und dem Budget entspricht." Andererseits kümmern sich bestimmte Endbenutzer, die nicht direkt für die Software bezahlen, wie Mitarbeiter eines großen Unternehmens, nicht wirklich um die Entwicklungskosten. Als Softwareanbieter ist es natürlich Ihre wichtigste Aufgabe, die Menschen bei Laune zu halten, die Sie tatsächlich bezahlen.
Zsolt Török
@Zsolt: Das hängt wirklich von der Art der Software ab, die Sie entwickeln. Normalerweise arbeite ich an Produkten, bei denen Endbenutzer entweder direkt für die Produkte bezahlen oder Kaufentscheidungen beeinflussen - sie geben uns keine Spezifikationen und kümmern sich nicht um unser Budget. Vielleicht hätte ich lieber den Begriff "Benutzer" als "Kunden" verwenden sollen.
Nemanja Trifunovic
4
Wenn ich als Benutzer (und nicht als Entwickler) spreche, kann ich sagen, dass die allgemeine Reaktionsfähigkeit (Anmerkung: nicht die Geschwindigkeit) ein wichtiger Faktor für meine Entscheidung ist, ein Programm einem anderen vorzuziehen. Dies ist ein Grund, warum ich zum Beispiel nur wenige Java-Anwendungen verwende. Allein die Startzeit auf der JVM führt zu Apps, die in diesem Bereich mit -5000 Punkten beginnen. Im Ernst, die Reaktionsfähigkeit kann (oft) den Unterschied zwischen einer klobigen oder effektiven Produkt-Benutzeroberfläche ausmachen, und manchmal kann dies schwierig sein, wenn die von Ihnen verwendete Sprache Ruckler oder lange Wartezeiten verursacht.
Billy ONeal
3

Langsam ist relativ. Wenn ich einen Port 10-mal pro Sekunde lesen muss, ist eine Sprache, die keine Binärdatei erstellen kann, zu langsam. Wenn ich eine Webanwendung schreibe, bei der die Anforderungs- / Antwortsequenz zwischen Server und Browser / Client in Sekunden gemessen wird und der Benutzer wahrscheinlich Minuten auf einem Bildschirm verbringt, bevor er auf eine Schaltfläche klickt, eine Programmiersprache, die die Anforderungsverarbeitung übernimmt in 1 Sekunde ist wahrscheinlich schnell genug (die meisten sind natürlich viel schneller).

Natürlich kann die Programmiersprache einen Einfluss auf die Ausführungsgeschwindigkeit haben, aber das ist nicht die Sprache selbst, sondern die Compiler und / oder Laufzeiten, die damit einhergehen. Dies zeigt deutlich die Entwicklung von Java, bei der die Leistung von JVMs (auch auf identischen Hardwareumgebungen) im Laufe der Jahre radikal gestiegen ist. Und natürlich ist es in jeder beliebigen Umgebung immer möglich, extrem langsamen Code zu schreiben. Solche Behauptungen wie "C ++ ist zehnmal schneller als Java" sind automatisch falsch, es sei denn, sie wurden qualifiziert und quantifiziert, um genau zu wissen, welche Bedingungen wie getestet wurden. Ebenso ist es möglich, einen Test zu erstellen, bei dem Java schneller als C ++ ist. Dies hängt davon ab, was Sie als Testcode verwenden und wie Sie ihn ausführen.

jwenting
quelle
3

Da es keine Programmiersprachen für Programmierer gibt, können mit ihnen Programme für Benutzer erstellt werden.

Wenn Sie nur ein einfaches kleines persönliches Werkzeug benötigen, um etwas einmal zu tun, kann es so langsam sein, wie Sie möchten. Sobald Sie jedoch mit der Bereitstellung für Benutzer beginnen, kümmern sich diese um Geschwindigkeit und Skalierung, insbesondere wenn sie diese wiederholt verwenden. (Zum Beispiel kann ein Installationsprogramm langsam sein; das Programm, das es installiert, sollte es nicht sein.) Und es ist nicht nur die Sprache; Es ist das Programm insgesamt. Wenn Ihr Programm langsam ist, wird es den Benutzern nicht gefallen. Und wenn Sie Konkurrenz haben, ist es eine sehr schlechte Sache, wenn Benutzer Ihr Programm nicht mögen. Eine Sprache, die dazu beiträgt, dass Benutzer Ihr Programm nicht mögen (indem sie es langsam machen), ist schlecht.

Ich bin Teil eines Teams, das Steuerungssoftware für Rundfunkmedien schreibt. Wenn Sie in den USA sind, läuft wahrscheinlich Ihr Lieblingsfernseh- oder Radiosender darauf. Leistung ist eines der Dinge, über die wir am häufigsten von Kunden hören. Es wurde ursprünglich für den Betrieb von kleinen Einzelstationen geschrieben, aber jetzt unterzeichnen wir große Rundfunk- und Kabelnetzwerke mit Hunderten von Kanälen, und die Skalierung wird zu einem Problem. Wenn es nicht gelingt, die Dinge für sie schnell laufen zu lassen, bringen sie ihre millionenschweren Verträge zu Leuten, die es können, und wir haben keine Arbeit mehr. Deshalb verwenden wir eine schnelle, kompilierte Sprache und optimieren die Ausnutzung unserer Datenbanken.

Mason Wheeler
quelle
3

Weil schneller besser ist. Zeit ist Geld. Wenn Sie Serversoftware schreiben und eine langsamere Programmiersprache verwenden, kaufen Sie mehr Server. Wenn Sie eine eingeschweißte Software schreiben, verlieren Sie Kunden an Konkurrenten, die schneller sind.

Für jede Art von dauerhafter Software, die von Menschen verwendet wird, möchten wir sie normalerweise so schnell wie möglich. Auf Baugruppenebene verkürzt sich die Markteinführungszeit zu stark, als dass dies rentabel wäre. Es sind alles Kompromisse. Aus geschäftlicher Sicht könnte es rentabler sein, die schlechten Programmierer Speicherfehler in C ++ mehrere Monate lang debuggen zu lassen, wenn dies bedeutet, dass das Produkt schneller ist als Ihre Konkurrenten.

Daher ist Geschwindigkeit in vielen Programmen wichtig . Langsame Sprachen gelten heutzutage als "schlecht", weil sie wirklich zu langsam sind (Python kann leicht 50x - 100x langsamer sein, und das ist zu viel).

kizzx2
quelle
2

Es gibt Programmiersprachen für Programmierer.

Ich weiß nicht, wie Sie zu diesem Schluss gekommen sind. Ich würde sagen: Softwareentwickler verwenden Programmiersprachen für ihre Bedürfnisse.

Einige Programmiersprachen sind langsamer als andere, aber das liegt nicht daran, dass etwas mit ihnen nicht stimmt.

Dies ist auch eine flockige Aussage. Definieren Sie, was Sie meinen, indem Sie hier das Wort "langsamer" verwenden. Langsamer könnte bedeuten:

  1. Endprogramme, die dasselbe erreichen, laufen in einer Sprache langsamer als in einer anderen.
  2. Die für die Erstellung des endgültigen Programms benötigte Zeit kann länger sein (einige würden es daher als langsamer bezeichnen).

Diese beiden Aspekte sind auch eng miteinander verknüpft, wenn es um einen Kompromiss zwischen Entwicklungsaufwand und Leistung geht.

JK
quelle
3
Sie sagen zu Recht, dass "Softwareentwickler Programmiersprachen für ihre Anforderungen verwenden". Dies unterstützt nur die Aussage, dass "Programmiersprachen für Programmierer existieren".
Emanuil Rusev
1
Ich würde sagen: Softwareentwickler verwenden Programmiersprachen, um Probleme zu lösen (die normalerweise nicht ihre eigenen sind, sondern die ihrer Kunden).
Péter Török
@Emanuil: Ich würde nicht sagen, dass "ein Hammer einem Handwerker / Menschen dient", sondern dass ein Hammer verwendet wird, um eine Aufgabe zu erledigen (z. B. einen Nagel zu hämmern, jemanden zu schlagen, den Sie nicht mögen usw.). @Péter: Ich frage mich, wie viele Leute gerade '@Peter' schreiben. Aber wenn Sie den Begriff "Problem" für alles prägen können , denke ich, dass unsere Aussagen effektiv synonym sind.
JK
1

Wie bei jeder Software kann Langsamkeit ein Zeichen für zugrunde liegende Probleme / schlechtes Design sein. Design ist zugegebenermaßen ein bisschen zeitgeistig, aber das beeinträchtigt nicht die Tatsache, dass die Designprinzipien, auf denen es jetzt basiert, veraltet sind und als „schlecht“ gelten.

Nehmen Sie zum Beispiel Classic ASP und ASP.net.

Tom
quelle
1

Jemand bemerkte, dass "Kunden Software lieben, die den Anforderungen und dem Budget entspricht". Nun, das ist wahr - aber es hat einen erheblichen Einfluss auf langsame Software, und das bedeutet per Definition langsamere Programmiersprachen (und Frameworks) und Algorithmen sowie langsamere Konfiguration. Eine langsame Programmiersprache ist möglicherweise der wichtigste Teil des oben Genannten, einfach weil es eine Grundlage ist, an der es für Sie am schwierigsten ist, Änderungen vorzunehmen. Wenn Sie eine Oracle-Datenbank verwenden und mehr Leistung benötigen, können Sie die Tabellen / den Index / usw. optimieren. Einfach. Wenn Ihr Code einen schlechten Algorithmus enthält, können Sie einen anderen Code schreiben. Wenn Ihr Framework langsam ist, können Sie es ersetzen - das ist nicht so einfach, aber es ist möglich, ohne alles neu zu schreiben. Wenn Ihre Sprache zu langsam ist, müssen Sie praktisch neu beginnen.

Besuchen Sie Facebook für den Aufwand, mit dem PHP schnell genug funktioniert, wenn es skaliert werden muss.

Für den Rest von uns werden "nicht funktionale Leistungsanforderungen" häufig in Spezifikationen festgehalten, insbesondere für skalierbare Web-Apps. Wenn die Seite nicht erfüllt wird, muss sie dem Benutzer innerhalb von 2 Sekunden nach Aufforderung angezeigt werden "und Sie verlieren den Vertrag (oder zahlen Strafen). Ja, Kunden lieben Software, die die Anforderungen erfüllt - und diese Anforderungen sagen, dass sie schnell sein muss (Es ist Ihnen vielleicht egal, wie lange die Benutzer auf die Sanduhr starren, aber der Kunde tut es auf jeden Fall - es ist ein enormer Preis).

Zum Beispiel wurde mir in einem großen Callcenter mitgeteilt, dass sie festgestellt hätten, dass für jede Sekunde, die Sie beim Annehmen von Anrufen sparen könnten, 1 Anrufbeantworter "verkleinert" werden könnte. Das ist plötzlich echtes Geld und ein enormer Anreiz für die Chefs, schneller, effizienter und benutzerfreundlicher zu werden.

Es wird viel Zeit damit verbracht, sich darum zu kümmern, dass Programmierer Code so schnell wie möglich ausgeben (und dann die ganze Zeit Unit-Tests und Refactoring durchführen, lol). Ich habe festgestellt, dass dies nicht so wichtig ist, wie die Leute glauben. Wenn Sie ein Experte in Ihrer Sprache sind, können Sie es viel schneller codieren, als wenn Sie unerfahren sind. Ein erfahrener C ++ - Entwickler kann also Code schneller und genauer schreiben als ein unerfahrener PHP-Entwickler. Ich denke, ein Experte zu werden ist wichtiger als eine "einfache" Sprache zu wählen, und deshalb mag ich den Kult des "Umschreibens in den coolen, neuen Sachen" nicht, der heute überall zu sein scheint.

gbjbaanb
quelle
1

Ich werde darauf hinweisen, dass die meisten Leistungsprobleme bestehen, weil der Programmierer einen schlechten Job gemacht hat, nicht weil die Sprache zu langsam war. Wirklich, es gibt viel mehr relevante Dinge, über die Sie sich Sorgen machen müssen, als über die Sprache, die Sie wählen. Das wäre ungefähr die Nummer 1.203.407 auf meiner Liste.

HLGEM
quelle
0

Ist eine langsamere Leistung der Programmiersprachen wirklich eine schlechte Sache?

Wenn alles andere gleich ist, ist es gut, schneller zu werden. Schließlich möchte niemand wirklich länger auf einige Ergebnisse warten, und sobald dieses Ergebnis fertig ist, können Ressourcen für andere Dinge freigesetzt werden.

Aber nicht alles andere ist gleich. Für den Anfang ist es auch wichtig, das richtige Ergebnis zu erzielen oder zumindest das Richtige. (Wenn völlig falsche Ergebnisse zulässig sind, können Sie diese in der Tat sehr schnell erstellen, und sie haben für jeden den Wert Null.) Wenn eine Änderung in eine etwas langsamere Sprache die Wahrscheinlichkeit erhöht, dass das richtige Ergebnis erzielt wird, ist dies in der Regel a Toller Kompromiss. Sprachen auf höherer Ebene haben hier einen Vorteil gegenüber Sprachen auf niedrigerer Ebene, da ihre reichhaltigeren Modelle es in der Regel einfacher machen, ein komplexes Problem ohne zu viele explizite Details auszudrücken.

In der Regel ist es auch wichtig, die Kosten für die erstmalige Erstellung der Software, das Hinzufügen neuer Funktionen und die Beibehaltung der Funktionsfähigkeit zu verwalten, wenn sich die zugrunde liegenden Systeme ändern. Höhere Programmiersprachen ermöglichen normalerweise einen schnelleren Programmier-Turnaround, und es ist sehr wertvoll, die Programmierkosten innerhalb des Budgets zu halten. Wenn die Kosten dort niedrig gehalten werden, können insgesamt mehr verschiedene Dinge erreicht werden, was im Allgemeinen gut ist.

Der letzte wichtige Punkt ist, dass nicht nur eine Sprache verwendet werden muss und dass bei vielen Softwaresystemen die Mehrheit ihrer Komponenten nicht leistungskritisch ist. Die Verwendung einer Sprache auf niedriger Ebene zur Herstellung von Hochleistungskomponenten für die kritischen Bits ist sinnvoll, während es äußerst sinnvoll ist, die weniger kritischen Teile einer Sprache auf hoher Ebene zu überlassen (um die Herstellungskosten zu minimieren). Darüber hinaus sind die Merkmale, die eine gute Sprache auf niedriger Ebene ausmachen (die Fähigkeit, genau zu steuern, was die Maschine tut), nicht die Merkmale, die eine gute Sprache auf hoher Ebene ausmachen (die Fähigkeit, Details aus viel kleineren Beschreibungen abzuleiten): Sie diametral entgegengesetzt sind, also in der Lage zu sein, sie zu verbinden und sie für ihre Stärken zu nutzen und ihre Schwächen zu vermeiden, das ist in der Tat eine großartige Sache.

Welche Komponenten sollen einer Hochleistungsbehandlung unterzogen werden? Die Optimierung? Messen Sie sie. Profiliere sie. Finde die Wahrheit, anstatt zu raten. Konzentrieren Sie sich dort, wo es am besten tut.

Donal Fellows
quelle