strcat+strcat+strcat == baaad

David Laight david at l8s.co.uk
Mon Dec 2 04:55:31 CST 2002


> With higher O values, the difference becomes bigger, but I'm not sure 
> then that some of the operations are not optimized out of the process, 
> which makes the entire benchmark useless.

I don't think they would be, and it is easy enough to check
(objdump -d way1).  Benchmarking is meaningless if you don't
use the optimisation level then will be used in real life.
Also the compiler is really designed to be used with -O,
the code generatd without it is only 'half cooked'.

> Do we go for David's suggestion, that is more efficient, but is also 
> more cubersome and requires two extra vars to implement right?

The extra variables are likely to be well optimised by the compiler.
strlcpy/cat will be even slower than the strcpy/cat versions.

way1:	 900 ms
way1a:	1321		(strlcpy/cat)
way2:	 721 ms
way3:	 322 ms
way3a:	 223 ms		(without bound check)

	David

-- 
David Laight: david at l8s.co.uk



More information about the wine-devel mailing list