Laufzeit Effizienz Und Programmier Effizienz
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Was ist Effizienz?
- Wirksamkeit und Wirtschaftlichkeit
- Duden, Deutsches Universalwörterbuch
- efficient capable of producing desired effects
- Websters new Encyclopedic Dictionary
In dem Begriff Wirtschaftlichkeit steckt, dass es bei Effizienz um ein Ziel und die Mittel geht, die zur Erreichung dieses Ziels erforderlich sind. Eine Methode ist dann effizienter als eine andere, wenn beide Methoden gleich wirksam sind, und wenn sie weniger Mittel zum Erreichen des gleichen Ziels benötigt.
Was hilft dem Programmierer, schnell ein Ziel zu erreichen?
- Ausreichend präzise Definition des Ziels vor Beginn der Arbeiten
- Alles, was ein Programm besser kann als ein Mensch soll ein Programm machen
- Was nicht falsch gemacht werden kann braucht nicht gefunden und beseitigt werden
- Je früher ein Fehler gefunden wird (z.B. bei der Übersetzung), desto weniger Arbeit verursacht seine Behebung
- Schnelles Feedback (vom Compiler, von Tests, vom Kunden, ...)
- ...
Was macht dem Autor eines optimierenden Übersetzungssystems die Arbeit einfacher
- Das ganze zu erzeugende System ist für eine Optimierung zugänglich (Im Gegensatz zur getrennten Compilierung von Übersetzungseinheiten, bespielsweise in C++ [SpracheCpp])
- Keine Aliase für Objekte
- ...
Was hilft dem Programmierer, ein zur Laufzeit effizientes Programm zu erstellen
- Ein Profiler
- Eine gute Portion Skepsis gegenüber Intuition und gesundem Menschenverstand
- Informationen über die im Produktivbetrieb vorhandene Laufzeitumgebung
- ...
Was stört den Programmierer beim Umgang mit Übersetzungssystemen/Entwicklungsumgebungen:
Bezüglich der Programmierer-Effizienz
- Die Notwendigkeit, redundante Informationen zu erstellen (Header in C, C++)
- Zu hohe Komplexität von Sprachfeatures (z.B. C++ Templates)
- Inkonsistenzen aller Art, die den Lernaufwand erhöhen
- Nicht alle Programmteile auch in einer textuellen Form bearbeiten zu können (rein visuelle Systeme wie Formulareditoren erhöhen die Effizienz beim Erstentwurf, verringern sie aber häufig bei Wartung und Wiederverwendung)
- fehlende Möglichkeiten, gewohnte Tools (Editoren, Precompiler etc.) bei Bedarf in den Entwicklungsablauf einbinden zu koennen (hochintegrierte Entwicklungsumgebungen)
- ...
Bezüglich der Laufzeit-Effizienz
- Bestimmte Sprachbestandteile, die sich ungenügend steuern lassen (z.B. Zeitpunkt und Ausmaß der GarbageCollection in Java)
- Wenn ihm die Entscheidung zwischen Performance- und Speicherplatz-Effizienz aus der Hand genommen wird (exzessives C++ Inlining in Libraries)
- Wenn er keine Möglichkeit hat, effiziente (platzsparende) Datenstrukturen aufzubauen (z.B. Java)
- ...
SoftwareOptimierung
StartSeite | Neues | TestSeite | ForumSeite | Teilnehmer | Kategorien | Index | Hilfe | Einstellungen | Ändern
Text dieser Seite ändern (zuletzt geändert: 22. März 2001 0:41 (diff))