Folge 5 - Performance Vs Abstraktion

Folge 5 - Performance Vs Abstraktion

Viele Entwickler nutzen das Argument der Performa…
3 Minuten
Podcast
Podcaster

Beschreibung

vor 3 Jahren
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.

Kommentare (0)

Lade Inhalte...

Abonnenten

15
15
:
: