11. August 2007

CCC Camp: Know your compiler

Category: CCC,Hacking — Christian @ 23:48

Fefes ersten Vortrag habe ich ja leider verpasst, aber zum zweiten Vortrag bin ich dann doch rein, obwohl ich anfangs ein wenig skeptisch war. Ein paar Sachen muss man Fefe jedoch neidlos zugestehen … was C angeht hat er richtig Ahnung. Die Kernaussage war dafür recht schlicht: „Lesbarer Code ist wichtiger als Optimierung“.

Don’t use Inline

  • das macht der Compiler von alleine wo es sinnvoll ist
  • in modernen Compilern ist da eine sehr gute Optimierung

Range checks

  • kann man immer machen
  • optimiert der Compiler gegebenenfalls automatisch weg wo sie unnötig sind

Strength Reduction

  • der Compiler macht automatisch shifts draus

Sizeof

  • optimiert der Compiler automatisch, auch bei mehrfachem Einsatz
  • keine „magic numbers“ verwenden

Tail recursion

  • kann man in eine nichtrekursive Funktion auflösen
  • macht der gcc automatisch
  • nicht icc und sun-cc

Aliasing

  • der Compiler muss hier sehr vorsichtig optimieren
  • (außer der gcc, der optimiert alles weg, aber dafür hat Fefe ja einen Bugreport geschrieben)
  • hier ist manuelle Optimierung möglich (aber lohnt sich kaum)

Dead Code

  • Compiler/Linker kann Code bzw. Objectfiles weglassen
  • Beim kompilieren von Bibliotheken jede Funktion in ein eigenes Objectfile packen

Inline Assembler

  • braucht man praktisch nie
  • ist blöd zu debuggen
  • besser nicht (lohnt sich auch kaum bei modernen Compilern)

Shifting

  • schwer in C zu programmieren
  • optimiert der Compiler automatisch

Pre- vs. Post-Operation

  • auch hier kaum noch Optimierungsmöglichkeiten

Memory Hierarchien

  • hier lässt sich am meisten tunen
  • ein Cache Miss schlägt mit 250 CPU-Cycles Penalty zu buche
  • das ist meist der teuerste Schaden und am wichtigsten zu optimieren

Aha … also gute Neuigkeiten für Spaghettiprogrammierer wie mich … einfach weitermachen, der Compiler optimiert das schon. 🙂

1 Kommentar

  1. Kommentare gesperrt wegen Spam

    Comment by Christian — 7. Juni 2012 @ 08:08

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.