Pro-Grammierer-Podcast

Folge 5 - Performance Vs Abstraktion


Listen Later

Viele Entwickler nutzen das Argument der Performance, um unsauberen Code zu schreiben. Ich gebe diesen Entwicklern teilweise Recht: Performanter Code benötigt manchmal die Ausnutzung sehr spezieller hardwarenaher Funktionen des Prozessors. Dem entgegen steht der Overhead, den Abstraktion bzw. sauberer Code nun einmal erzeugt.
Und trotzdem gibt es Wege heraus aus der Krise. Ein Patentrezept gibt es natürlich nicht. Das Thema ist so komplex, dass ich immer wieder mal Podcast-Folgen zu dem Thema machen werde. Wenn du also mehr darüber erfahren willst: Sauberen Code optimieren, dann abonniere diesen Podcast.
Aber steigen wir doch mal direkt ins Thema ein:
Als Einstieg etwas Altbekanntes: Sortierverfahren. Informatiker aller Welt schreiben Sortieralgorithmen wieder und wieder, weil die Abstraktionsverfahren bei den Programmiersprachen noch nicht wirklich ausgereift sind.
Klar: es hat sich eine Menge getan: Programmiersprachen mit dynamischem Typsystem und funktionalen Elementen wie JavaScript haben kein Problem mehr damit, eine einheitliche Array.sort-Funktion anzubieten.
Auch C++ punktet mit seinen statischen Templates, die keine Laufzeit- und Speicher-Overheads mehr wie JavaScript aufweisen. Dafür compiliert der Code etwas länger.
Und doch gibt es noch einige Entscheidungen, die so rein gar nichts mit der Programmlogik zu tun haben, sondern eher ein kleines Geplänkel zwischen Performance-Charakteristiken zulasten der Abstraktion sind: In C++ muss man sich festlegen, ob man die Liste als Pointer-Liste oder als komplettes Struct-Array hinterlegt. Ersteres benötigt einen ziemlichen Speicher-Overhead, ist aber schneller sortiert, letzteres ist effizienter beim Speichern, aber langsamer beim Sortieren, wenn der Struct groß genug ist.
Die anderen Programmiersprachen sind hier übrigens keinen Deut besser: Sie geben einfach eine von beiden Datenstrukturen vor und vergewaltigen dafür die Performance zugunsten der Abstraktion.
Die optimale Lösung des Problems der Abwägung Speicher vs. Performance vs. Abstraktion bei den Sortierverfahren ist jetzt nicht ganz so ganz einfach und beschäftigt Informatiker schon Jahrzehnte. Deshalb werde ich hier jetzt auch keine einfache Lösung vorschlagen.
Es gibt aber eine Menge anderer Beispiele, wo eine Performance-Optimierung, die nicht zulasten der Abstraktion gehen muss, umsetzbar ist. In den kommenden Podcast-Folgen will ich weitere solche Beispiele Stück für Stück behandeln. Vergesst also nicht, den Podcast zu abonnieren.
...more
View all episodesView all episodes
Download on the App Store

Pro-Grammierer-PodcastBy Carl-Philip Hänsch