Kompilatory i optymalizacja
Kilka dni temu znajomy przysłał mi adres do strony z materiałami z prezentacji Felix’a von Leitner pt. “State of the art C compiler optimization tricks” która miała miejsce podczas Linux Kongress 2009. Jak po tytule łatwo stwierdzić prezentacja mówi o kompilatorach i optymalizacji. Składa się głównie z króciutkich (acz podchwytliwych dla optymalizatora) kodów w C i ich assemblerowych wersji wygenerowanych przez kilka najpopularniejszych kompilatorów – GNU GCC, Intel C Compiler, Sun C Compiler, Microsoft Visual C Compiler i LLVM.
W prezentacji porównywany jest przede wszystkim “spryt” optymalizatora, jak np. zamiana czasochłonnego mnożenia liczby przez 9, na mnożenie przez 8 (czyli de facto bardzo łatwe i szybkie do wykonania przesunięcie bitowe w lewo o trzy) i następnie dodanie mnożonej liczby do wyniku. Ale też i jakość kodu, czyli np. ilość skoków warunkowych, ilość odwołań do pamięci (które jak wiadomo są bardzo czasochłonne) i długość samego kodu wynikowego.
Jeśli kogoś interesuje ta tematyka to gorąco polecam chociaż przejrzeć wspomnianą prezentację. Znajomość assemblera nie jest obowiązkowa, bo kod jest dobrze opisany, ale na pewno pomoże w zrozumieniu co sprytniejszych rozwiązań stworzonych przez kompilatory.
Jeśli chodzi o mnie to po przeczytaniu tych materiałów mój szacunek do GCC i ludzi zaangażowanych w jego tworzenie i rozwój znacznie wzrósł. Zdecydowanie polecam używać właśnie tego kompilatora do pracy. Ale przeczytajcie i oceńcie sami. ;-)
Recent Comments