I don't remember who it was, but someone was asking about why libmad is compiled with -O1 optimisation (instead of eg -O3).
Anyway, I just found the results of some profiling tests I did a while back using the Pentium Time Stamp Counter to profile the imdct36() function in layer3.c, mad-0.11.0b.
Hopefully the results are of interest, although I can't really offer too much explanation except to suspect 'features' in the gcc optimiser....
All results are in clock cycles on a Pentium III:
gcc version egcs-2.91.66 (ie stock RH 6.2):
gcc -O1 : 1329 clocks (asm mad_f_mul), 1529 clocks (C mad_f_mul) gcc -O2 : 1607 clocks (asm mad_f_mul), 2176 clocks (C mad_f_mul) gcc -O3 : 1608 clocks (asm mad_f_mul), 2186 clocks (C mad_f_mul)
gcc version 2.95.2 19991024:
gcc -O0 : 2946 clocks (asm mad_f_mul), 2616 clocks (C mad_f_mul) gcc -O1 : 1735 clocks (asm mad_f_mul), 1201 clocks (C mad_f_mul) gcc -O2 : 1380 clocks (asm mad_f_mul), 1567 clocks (C mad_f_mul) gcc -O3 : 1380 clocks (asm mad_f_mul), 1567 clocks (C mad_f_mul)
Rob, any news on an ETA for the next release ??
Andre --
____________________________________________________________ Do You Yahoo!? Get your free @yahoo.co.uk address at http://mail.yahoo.co.uk or your free @yahoo.ie address at http://mail.yahoo.ie