6 ms·
A bit off-topic, but since I discovered Intel's compiler years ago, I've been wondering why I, the generic desktop programmer, would want to pay for a compiler
by delinka 14y ago
A bit off-topic, but since I discovered Intel's compiler years ago, I've been wondering why I, the generic desktop programmer, would want to pay for a compiler when the free ones are pretty damn good. I can think of only a small set of use cases where the CPU manufacturer might know the best optimization for some code that's heavily utilized in compute-intensive projects, but that seems like a small market.
- duaneb 14y agoSupport? That's a big thing for some people.
- deleted 14y ago[deleted]
- fafner 14y agoIt's been ages since I used icc. But last time I used it, it could really do magic when it came to vectorisation and SSE support. So if you have heavy numeric code then it might be worth it. For Linux you can get a free (as in beer) edition for non-commercial use. For normal desktop applications it probably doesn't make sense.
- octo_t 14y agoICC is (in terms of basically all optimisations) leagues ahead of the open-source compilers. The vectorised code the compiler produces is also a lot better. See http://stackoverflow.com/a/11227902/1346405 http://stackoverflow.com/a/11227902/1346405
- jedbrown 14y agoThe Intel compiler tends to have an edge when you write rampantly inefficient code to begin with. If you structure your code reasonably, the only reliable performance difference I have seen is that the Intel compiler takes longer to compile and produces much larger binaries (4x is typical). The run-time performance is rarely significant. Also remember the "run slow on AMD" feature, which implies that two code paths are often generated.
- hazov 14y ago> but that seems like a small market Private companies who deals with CFD (Computational Fluid Dynamics) and Aerodynamics simulations are companies with deep pockets and who generally pay for a bunch of licenses of these compilers, it's not a small market, I can assure you that.
- positr0n 14y agoI've had the same experience. The only place I've seen icc being used was a CFD group in a National Lab.
- pjmlp 14y agoBecause they still generate way better code? Oh and support as well, very important in big companies.
- jevinskie 14y agoSupport is crucial. You may not hear about toolchain bugs often but I see them every day working on binutils/LLVM/Clang. If you run up against one, it isn't fun.
- pjmlp 14y agoI already found two in my career. One in Turbo Pascal 5.5, which allowed to use local variables as the function name. Another one in IBM JDK in Linux, which produced core dumps. Both were discussed with their respective vendors.
- zurn 14y agoHow would you say ICC support is better than MSVC or commercial GCC support?
- JoeAltmaier 14y agoIntel's compiler generates code that runs twice as fast. Speed should really have been in the list. On that note, the whole list looks like it was written from the point of view of gcc. Features on other compilers that vary from gcc are given 'partial' credit, since I guess they do it differently and different is bad. And extensions in other compilers are not mentioned at all. It looks like the 'shootout' was done by standing in gcc's corner and taking pot-shots at everybody else in the room.
- chrisdevereux 14y agoYeah. If only there was some kind of standard that we could evaluate the competing implementations against.
- ajross 14y agoIt was an article about C++11 feature compliance. You're saying that no one should be allowed to write such an article unless they're also prepared to do an (essentially unrelated) benchmarking study? And ICC tends to do quite well, though "twice as fast" is pretty spun (I'm sure there's a vectorizable routine somewhere that does that, certainly most typical code is going to be more in the "even to 10% better" range).
- rayiner 14y agoOnly in relatively rare cases where ICC can auto vectorization and gcc can't. Otherwise, very comparable on 64-bit: http://willus.com/ccomp_benchmark2.shtml?p17 http://willus.com/ccomp_benchmark2.shtml?p17
- berkut 14y agoIt's much better at vectorising code (using SSE and AVX) than MSVC and GCC, it's got better loop unrolling heuristics (it's better at working out when unrolling isn't worth it or will slow things down), and its maths functions are much faster than the native ones on all platforms.
- stephencanon 14y ago> Its maths functions are much faster than the native ones on all platforms. If this includes OS X, I would love to see a source.
- Arelius 14y agoWhy OS X in particular?
- berkut 14y agoIn my experience writing high end VFX software for three platforms, Linux's libc is the slowest with normal maths functions, and Windows is the fastest. Intel's math libs are often 4-5x times faster - if you do a microbenchmark of a loop of powf() or sin() functions, it'll be that much faster using the Intel libs. If building with fmath=fast for fast floating point math, Intel's fast versions are also quite a bit more accurate, and done't produce nans or infs as much.
- Nick_C 14y ago> Linux's libc is the slowest with normal maths functions Do you happen to remember which one? There have been a few "sporks" of glibc in the last few years and, if memory serves me correctly, Debian now use eglibc. I think the sporks were done to address bloat, but I'm also curious if they address speed.
- corresation 14y agoWorth noting that auto-vectorization is new in MSVC. http://msdn.microsoft.com/en-us/library/hh872235.aspx http://msdn.microsoft.com/en-us/library/hh872235.aspx
- shrughes 14y agoThe Intel debugger is much better than gdb, I'm told.