I've been trying to figure out why the below math benchmark code appears to run about twice as fast on the same eval board, depending on whether I use KEIL or IAR tools to build the project. The pulse on LED1 is about 6 usec's with the KEIL tools, while it's less than 3 usec's with the IAR tools. Basically, my code temporarily disables interrupts, drives an I/O pin high, does a math operation, and then drives the I/O pin low again. The function that does this is called repeatedly so that triggering on the pulse with an oscilloscope gives a pretty good indication of the chip+tools math performance. EX: float f1,f2,f3; f1 = (float)rand()/((float)rand()+1.0); f2 = (float)rand()/((float)rand()+1.0); AIC_DCR = 0x00000001; PIOA_SODR = LED1; f3 = f1 / f2; PIOA_CODR = LED1; AIC_DCR = 0x00000003; Can anyone tell me whether they've looked into which toolset does floating point math faster, and why the code generated with the KEIL tools seems to only run about 1/2 as fast as the same code generated with IAR tools? Can anyone give me a suggestion for what I could do (software changes only) to speed up the math on the KEIL generated code?
5.1 usec's versus 8.2 usec's is almost a 40% savings in execution time. If you've got a very large amount of division to do all the time, that is significant. If you're running several PID loops where the processes are related to each other, even small errors can accumulate and throw things off too. Don't get me wrong, I'm not trying to say the KEIL math performance is horrid or anything. And I'm not saying that the test a previous poster referred to is a perfect test. But, I think there's still more to look into. I agree with Erik that the bottom line is how well the code generated with a particular set of tools really works for your particular application, and whether or not there's a significant difference between those results and the results obtained from other tools. I also agree that support is a very big factor in the tool selection process. I am truly impressed, pleased and grateful for the quality and amount of advice and concern that posters in this forum have provided to me as I've been looing into this and other matters. Many thanks to all of you...!