Benutzer-Werkzeuge

Webseiten-Werkzeuge


de:lehre:programmierkonzepte:ws2017:21:index

21. Codeoptimierung

Themen
Motivation
Voraussetzungen
Strategien
Zusammenhang mit „Clean Code“
Folien
PDF


Zentrale Aspekte

  • Laufzeit und Ressourcenverbrauch sind in den
    seltensten Fällen ein ernsthaftes Problem.
  • Code sollte nur dann optimiert werden,
    wenn es unumgänglich ist.
  • Voraussetzungen für erfolgreiche Optimierung sind
    Messbarkeit, Tests und Versionsverwaltung.
  • Optimierungsstrategien hängen oft von Architektur, Programmiersprache und Compiler ab.
  • Optimierungen haben häufig (ungewollt)
    Einfluss auf die Funktionalität.

Weiterführende Literatur

Eine kommentierte und handverlesene Liste mit weiterführender Literatur zum Thema. Die Auswahl ist zwangsläufig subjektiv.

Codeoptimierung ist insofern ein schwieriges Thema, als dass der Erfolg konkreter Strategien sehr von den jeweiligen Umständen abhängt. Deshalb ist es sinnvoll, sich auf das allgemeine Vorgehen zu konzentrieren. Eine recht ausführliche Beschreibung der allgemeinen Herangehensweise inklusive deutlicher Warnungen findet sich in Kapitel 25 in [McConnell, 2004McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington]. Das anschließende Kapitel 26 beschreibt dann eine ganze Reihe konkreter Optimierungstechniken inklusive der Vergleiche für jeweils mehrere Programmiersprachen.

Weitere Beispiele für allgemeine Beschreibungen des Problems und Vorgehens bei Codeoptimierung, jeweils mit Beispielen für konkrete Techniken, finden sich in Kapitel 12 in [Raymond, 2004Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston] und in Kapitel 7 in [Kernighan, 1999Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston]. Eine gute Einführung in die O-Notation für die Komplexität von Algorithmen liefert Abschnitt 32, S. 177ff. in [Hunt, 1999Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston].

Kapitel 12 in [Scopatz, 2015Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol] befasst sich mit Parallelisierung als Spezialgebiet der Steigerung der Ausführungsgeschwindigkeit, die für manche Aspekte in den Naturwissenschaften durchaus von Belang sein kann, Abschnitt „Performancetests“ in Kapitel 16 in [Passig, 2013Passig, Kathrin; Jander, Johannes (2013): Weniger schlecht programmieren, O'Reilly, Heidelberg] gibt eine kurze deutschsprachige Einführung in die Thematik.

  • Hunt, Andrew; Thomas, David (1999): The Pragmatic Programmer, Addison-Wesley, Boston
  • Kernighan, Brian W.; Pike, Rob (1999): The Practice of Programming, Addison Wesley, Boston
  • McConnell, Steve (2004): Code Complete. A practical handbook of software construction, Microsoft Press, Redmond, Washington
  • Passig, Kathrin; Jander, Johannes (2013): Weniger schlecht programmieren, O'Reilly, Heidelberg
  • Raymond, Eric S. (2004): The Art of UNIX Programming, Addison Wesley, Boston
  • Scopatz, Anthony; Huff, Kathryn D. (2015): Effective Computation in Physics, O'Reilly, Sebastopol
de/lehre/programmierkonzepte/ws2017/21/index.txt · Zuletzt geändert: 2020/09/30 21:35 von 127.0.0.1