Monday, May 12, 2008

Profile-Guided Optimizations for Software Development

Opera - The Fastest Browser on Earth Not being a commercial software developer, I hadn't heard of Profile-Guided Optimizations (from the blog of the Opera Browser Desktop Team), but it sounds clever: run some "real-world benchmarks" through your application, and then recompile the application to optimize for the code path followed most often.

Is this common in software engineering? Do EDA tools do tricks like this for best performance? Let's hope so.


harry the ASIC guy said...

I know that this is not an EDA tool, but the Tensilica XTensa cores came to mind when I read this. In simple terms, using some software from Tensilica, you can customize/configure the execution units and instruction set of the processor to meet the processing profile of the intended application. I have not used this, but one of my former clients did an entire multi-media SoC using customized Xtensa cores, e.g. one was an audio codec, another a graphics processor, another did MPEG compressions, etc.

Any idea how much extra performance is gained using this method? If you can gain 10-20%, then this would be a good trick to do for simulators before running regression sims. Maybe someone from an EDA company can comment.

sandeep said...

Hmm... this was a nice one John. According to the article, most modern compilers have inbuilt support for PGO - you just have to turn it on. Never knew about this. Gotta go fire up VS!