|
|
|
|
|
by larsberg
5210 days ago
|
|
If your only reason for using gcc is speed and you're on a Linux platform, you should really try out icc. The loop unrolling and vector op generation are much better than gcc's (at least for code we've tested on, YMMV) and can result in some really big speedups. Though, admittedly, if speed is an issue you probably have already manually loop-unrolled and used the gcc compiler intrinsics. |
|
A) it's proprietary, I have no interest in relying on a proprietary toolchain (and from what I gather neither does the company I work for)
B) it supports a very limited range of cpu architectures, not only is it directly tailored for Intel cpu's it even has a history of selecting poor code paths for AMD cpu's.
As for manual loop unrolling, for alot of code PGO does a great job here by unrolling based on the statistics gathered during the first pass. In fact GCC's pgo seems to do a better job than ICC's pgo implementation, ICC's lto beats GCC's on the other hand, and of course ICC does a better job at vectorization and has better optimized math functions.