On Tue, Jan 12, 2010 at 11:30:02PM +0100, Per Jessen wrote:
David Haller wrote:
... and replaced it by what? And have you compared to C-Code compiled with gcc or icc? ;)
The div was a divide by 10 followed by examination of remainder and quotient. Under the circumstances, the number being divided would always be in the range 0-19, which meant I could easily substitute with a subtract 10 and a check of the result. The div was effectively replaced by 3 other instructions, and I think I managed to do away with one more instruction along the way. (I really only looked at the timing).
As for gcc code, I did start out with C-code for a quick prototype. I also had a quick look at what was generated - it would have been horrendously slow in comparison. After all, neither gcc nor icc could have been aware of the special circumstances that I knew about.
But an operation on the range 0-19 could have been implemented with a lookup table or switch statement in C. This is a standard algorithmic optimisation possible in any language. ciao Arvin -- Arvin Schnell, <aschnell@suse.de> Senior Software Engineer, Research & Development SUSE LINUX Products GmbH, GF: Markus Rex, HRB 16746 (AG Nürnberg) -- To unsubscribe, e-mail: opensuse-programming+unsubscribe@opensuse.org For additional commands, e-mail: opensuse-programming+help@opensuse.org