Agreed, GCC is currently the only official compiler on Android, so the OS and all native code is compiled with it. Therefore any Android benchmarking should be done using GCC. Using GCC also has the advantage that unlike some other compilers it is not optimized to do well on benchmarks (or even break them) but actually focusses on performing well on real code.
The next version of AnTuTu will revert back to GCC. Hopefully they also fix the compiler options to be the same on all targets (the ARM version was compiled -Os with inlining and unrolling disabled) so that we finally end up with a fair comparison. Of course none of this changes the fact the benchmark itself remains rubbish - setting bits in memory is not a good memory performance test.
Another way to look at this is: Since we're talking about performance of mobile devices running Android, perhaps benchmarks should use whichever compiler is typically used for on a given processor when that processor is used in Android mobile devices.
In other words, rather than choosing the compiler that yields the best benchmark results, let's use the compiler (and compiler settings) that yields the most realistic benchmark results.
I feel it is not fair to Compare GCC on ARM Processor against ICC on Intel Processor. From my past experience, ARMCC used to outpform GCC 2:1 in some cases. So I feel fair comparison should be either GCC on both ARM & Intel Processor or ARMCC on ARM Processor and ICC on Intel Processor. Of course, that will give ARM processor more edge against Intel Processor. I know ARM inc has been working to improve GNU compiler efficiency. So the gap between ARMCC and GCC might not be as bigger as used to be.
In terms of the timing, I and many of my colleagues were made aware of the 3.2.2 revision on Wednesday evening, which is what I am going by.
In terms of performance being meaningless, I agree. The best measure is efficiency (performance/Watt), and the most accurate measurement is platform efficiency. Even measuring just the CPU core or SoC is rather meaningless. Take the Intel Atom vs. the Qualcomm Snapdragon. If you were doing a fair comparison you should include all the functions that are integrated into the Snapdragon, such as wi-fi and the cellular baseband modem. On a platfom without those functions integrated into the SoC like the Atom, you have to factor in the combo chip, the baseband modem chip, and the filters managing coexistence issues. Then you need to add in any external accelerators that the other platforms may or may not have ro require, such as image signal processors, video processors, DSP, etc. And this is just to make a viable silicon comparison. However, if you really want to measure overall performance and power, you need to factor all the other system components and software as well.
So, I agree that we need a better way to evalaute mobile paltfroms and the key components that drive them. Any suggestions?
Just showing performance numbers without measuing how much energy has been actually used to run the benchmark is meaningless. A quad core out-of-order CPU beating a dual-core in-order CPU in multi-thread benchmarks..color me surprised!
A Book For All Reasons Bernard Cole1 Comment Robert Oshana's recent book "Software Engineering for Embedded Systems (Newnes/Elsevier)," written and edited with Mark Kraeling, is a 'book for all reasons.' At almost 1,200 pages, it ...