skip to main content

kiesler.at
You are NOT logged in. ( login | New Account Signup | Forgot Your Password? ) Why log in?

Codeoptimierung mit BURG
updated by rck, 2006-03-26

Im Sommersemester 2004 galt es, wie schon viele Jahre davor, im Rahmen der Übung Übersetzerbau einen codeerzeugenden Compiler zu schreiben und zu optimieren. Ich möchte hier ein paar der von mir eingesetzten naheliegenden und weniger naheliegenden Tricks vorstellen.

                     
1 | 2 | 3 | 4 | 5 | 6 | 7

Motivation

Die Rechner und CPUs werden immer schneller, wozu also Code optimieren? Ganz einfach: Damit von der gewonnenen Geschwindigkeit auch etwas übrig bleibt!

Dinge, wie eine supercoole Benutzeroberfläche a la Luna oder Aqua fressen im wesentlichen die ganze CPU-Zeit moderner Prozessoren, seltsames Prozessmanagement tut sein übriges, leistungsmäßig in der Vergangenheit zu bleiben. Unpassende Algorithmen, versteckte sequential Scans beispielsweise tun ihr übriges, um Hardwareherstellern ein Zubrot zu sichern.

Für ausgefeilte Optimierungstricks gibt es eigene Übungen, ich möchte deshalb hier ein paar andere, pragmatische Tips vorstellen, die teilweise ziemlich an der Oberfläche bleiben und dennoch einiges bringen.

Die Metrik

Wir haben in Übersetzerbau ein klares Ziel: Die Anzahl der Assembler-Instruktionen reduzieren! Welche Ziele könnte es sonst noch geben?

Nun, beispielsweise Laufzeiteffizienz. Ein Netzwerkzugriff ist langsamer als ein Festplattenzugriff, dieser wiederum langsamer als Speicherzugriff, dieser langsamer als Registerzugriff, und so weiter.

Der Einfachheit halber beschränken wir uns bei Übersetzerbau aber, wie geschrieben, auf die Anzahl der ausgeführten Operationen.

                     
1 | 2 | 3 | 4 | 5 | 6 | 7



RSSComments - Make a comment
The comments are owned by the poster. We are not responsible for its content.
RSSAll Articles
2008, 2007, 2006, 2005, 2004