maandag 13 oktober 2008

Een klein experimentje

Daarnet even met Ares aan het praten over g++ optimization levels. Hiermee geef je aan de compiler mee dat hij moet proberen je code zo optimaal mogelijk te compileren. Dus heb ik bij wijze van experiment alles gecompileerd met de flag -O3 (optimization leven 3, het meetst geoptimaliseerd). Dan krijg ik de volgende rendertijden:


figuur#driehoeken#seconde
kegel32<1
cilinder641
bol4801
torus10243
theepot403237
konijntje511054


Grosso modo een factor 3 snelheidswinst door 3 karakters te typen: -O3 !

In een van de besproken papers renderen ze een scene van 804 driehoeken in 0.7 seconden, de regel van 3 leert ons dat ze 1024 driehoeken renderen in 1.12 seconden (Ik veronderstel hier een lineair verband, in de praktijk is dit logaritmisch). Ik kan momenteel 1024 driehoeken renderen in 30 seconden bij een resolutie van 1024 x 1024 (In van één mijn vorige posts was ik mis bij mijn vergelijking omdat ik daar renderde in een resolutie van 300 x 300). Dat is een factor 27 trager dan hun implementatie. Nog wat werk af te leggen :)

1 opmerking:

Daniel Balog zei

merci voor de tip! :p Die compiler optimalisaties zijn idd te gek gewoon.