Slashdot Mirror


Speed Test 2: Comparing C++ Compilers On WIndows

Nerval's Lobster writes "In a previous posting, developer and programmer Jeff Cogswell compared a few C++ compilers on Linux. Now he's going to perform a similar set of tests for Windows. "Like all things Windows, it can get costly doing C++ development in this environment," he writes. "However, there are a couple notable exceptions" such as free and open-source cygwin, mingW, Express Versions of Visual Studio, and Embacadero. He also matched up the Intel C++ Compiler, Microsoft C++ Compiler, and the Embarcadero C++ 6.70 Compiler. He found some interesting things — for example, Intel's compiler is pretty fast, but its annoying habit of occasionally "calling home" to check licensing information kept throwing off the rests. Read on to see how the compilers matched up in his testing."

132 comments

  1. Calling home by six025 · · Score: 1, Insightful

    >> its annoying habit of occasionally "calling home" to check licensing information

    Calling home for the latest NSA exploits to inject in to your application? /tinfoil-hat-no-so-paranoid-these-days-dept

    1. Re:Calling home by NoNonAlphaCharsHere · · Score: 2

      ..."calling home" to check licensing information kept throwing off the rests.

      Oh, they meant the tests.

    2. Re:Calling home by Anonymous Coward · · Score: 0

      It's pretty trivial to monitor your traffic and determine the difference between a license check and a binary.

      So no, probably not. But let's keep an eye on it.

    3. Re:Calling home by fuzzyfuzzyfungus · · Score: 4, Interesting

      Depends on the paranoia of the DRM implementation.

      A simple "We sell to corporations, so we don't expect cracks but we do expect optimists trying to install a few extra seats" licensing system really just needs to (ideally over SSL, hear that, LG?) phone home the serial number at intervals and get a 'yes/no' in response.

      The more paranoid systems, designed on the assumption that the client will be under active attack, may be considerably murkier. Something like 'BD+', for instance, for Blu-ray DRM, mandates a proprietary, blackbox virtual machine (with access to the client hardware's memory and the ability to run native code, including applying persistent patches to the client system, in addition to what it does internally) that executes whatever blob of BD+ code burned into the disk you try to play.

      A system like that, or an AV-like 'signature' system that is designed to have one or more parts of the client DRM continually interrogating one another in novel ways to detect compromises in the authentication mechanism would be more or less indistinguishable from a binary, because it would be one.

      For something like a compiler, rather than a game, or some precious 'premium content', I'd expect the former; but I've underestimated human stupidity before.

    4. Re:Calling home by Kardos · · Score: 3, Informative

      You might think so, but no. If the licensing check is done in the clear, one could spoof the reply and thus bypass the licensing effortlessly. More likely it's encoded/encrypted in some way that you can't (easily) fake a green light. So you may be able to identify the transmission of "very large binary" or equivalent, but differentiating between a "license check" and "tiny binary" would be tricky since you won't be reading the stream.

    5. Re:Calling home by Ravaldy · · Score: 1, Troll

      Who mods this garbage up?

    6. Re:Calling home by Anonymous Coward · · Score: 0, Troll

      your expectations of moderators --------


      bar for getting mod points _____

    7. Re:Calling home by Anonymous Coward · · Score: 1

      Sure, it's nonsense. Then Stuxnet happened. When "someone" is investing that much effort into injecting malicious binary code into specific industrial equipment, I think anything is possible if there was sufficient motivation behind it. Ordinary people as targets? Obviously not worth the trouble, so for most of us it's something we can joke about and forget. But let's say someone is compiling programs to run some important industrial equipment along similar lines as Stuxnet's target. Maybe they're doing it precisely because they don't trust outside code that they can't audit themselves. In that circumstance I wouldn't put it past nefarious people trying to introduce something via the compiler itself. It is a possibility that people have pointed out for years as a theoretical possibility, even though it's probably a pretty challenging vector.

      Checking licensing information is pretty far removed from actually injecting code, but if the process also involves automatically downloading updates, there are possibilities for making it happen (e.g., spoofing the update servers).

    8. Re:Calling home by jones_supa · · Score: 1

      >> its annoying habit of occasionally "calling home" to check licensing information

      Calling home for the latest NSA exploits to inject in to your application? /tinfoil-hat-no-so-paranoid-these-days-dept

      They are also trying to ram down the users' throats a sign-in feature with VS2013 too.

    9. Re:Calling home by jones_supa · · Score: 1, Offtopic

      Who mods this garbage up?

      You can bet it's not me. I almost get sex more often than Slashdot mod points.

    10. Re:Calling home by AliasMarlowe · · Score: 0

      Who mods this garbage up?

      You can bet it's not me. I almost get sex more often than Slashdot mod points.

      Damn. I get 5 mod points almost every day. It can be quite exhausting.
      A couple of years ago, I was getting 15 mod points daily for a few weeks. Couldn't have taken it much longer...

      --
      Those who can make you believe absurdities can make you commit atrocities. - Voltaire
    11. Re:Calling home by Anonymous Coward · · Score: 0

      what? the israeli-excstacy-drug tests, or the compiling of the lists of illegal israeli insider trading?
      "/., the tech buck stops here!"

    12. Re:Calling home by mikael · · Score: 0

      There was a company that sold (or still sells) a blob of software that calculated a registration key based on the configuration of the hardware; serial numbers of the CPU(s), motherboards, GPU boards, installation date of the software, time zone. If any of those changed, you would have to apply for a new registry key.

      --
      Vintage computer adverts: http://www.vintageadbrowser.com/computers-and-software-ads
    13. Re:Calling home by Kardos · · Score: 1

      That seems like a terrible idea. You'd have many legit claims for new reg keys, how would you know when to deny the requests from people pirating the software? Ugh.

    14. Re:Calling home by Anonymous Coward · · Score: 0

      Remember Stuxnet required a great deal of human interaction to work. Physical break-ins at 2 different companies to secure security certificates. Developers needed in-depth knowledge of control systems and centrifuge internals and access to similar PLC's Omnis, and other SCADA systems for building and testing the code. And finally someone had to walk into the lab and insert a USB into a networked PC to kick things off. Your average hacker does not have the capability to create and distribute this type of attack. I work with oil and gas refineries and pipelines which do not allow any remote access to any of their networks. Any attacks on these systems would require in-house help to succeed. If the controls or systems were compromised there are dead man switches in place to prevent catastrophic failures. If you want to attack infrastructure it is easier to just blow-up the pipelines or power lines.

    15. Re:Calling home by Anonymous Coward · · Score: 0

      Yeah they're really trying to 'ram it down user's throats' with that Not now, Maybe later option. Don't be so submissive.

    16. Re:Calling home by Anonymous Coward · · Score: 0

      There is/was actually a lot of companies that did that.

    17. Re:Calling home by X0563511 · · Score: 1

      PKI can fix that for you... allowing the message to be open, but incapable of being spoofed.

      --
      For large sets, this will be our guide even unto death, for the LORD will work for each type of data it is applied to...
  2. Crickets... by Anonymous Coward · · Score: 1

    I do believe that no one on slashdot cares about this.

    1. Re:Crickets... by NotBorg · · Score: 3, Insightful

      It would help if he actually measured something worthwhile. In the 20+ years I've been coding, I've never once picked a compiler on the basis of how long it takes to spit out a binary. There are just so many other more interesting features and characteristics to consider.

      --
      I want this account deleted.
    2. Re:Crickets... by ebno-10db · · Score: 2

      In the 20+ years I've been coding, I've never once picked a compiler on the basis of how long it takes to spit out a binary.

      Then you don't compile big projects. Neither do I, but there are projects where a full build can take hours. Sure build farms and stuff help, but so does a 2x faster compiler.

    3. Re:Crickets... by Tallfeather · · Score: 2

      I do work on large projects in the multi-hour range for a full rebuild, and the compile time is still pretty much the lowest priority in selecting a compiler. All things being equal, of course I'd like to have the fastest compiles possible. But more important than that is that I can write the code I need to write without dodging compiler bugs / shortcomings all day, and deliver a binary which is optimized well for the target.

      You can adapt to slow compiles. Breaking the project up into libraries, for example. You can't readily adjust to other compiler problems.

    4. Re:Crickets... by Anonymous Coward · · Score: 0

      If you get a compiler that can generate a binary, say, twice as fast, then you can iterate twice as fast. You can use that iteration time to add features, fix bugs, or optimize your code. A compiler that is two times slower had better be a *lot* better in every other way to justify such a huge lowering of developer productivity.

    5. Re:Crickets... by RaceProUK · · Score: 1

      Nah, just break the project up into libraries and turn on incremental build.

      --
      No colour or religion ever stopped the bullet from a gun
    6. Re:Crickets... by david_thornley · · Score: 2

      Iterate twice as fast? Only if all you do is compile. Some of us compile, test some, think, make changes, and then recompile. I heartily recommend the "test" and "think" ideas if you're not used to them.

      --
      "When you have eliminated the unacceptable, whatever is left, however improbable, must be the truthiness" - Holmes
    7. Re:Crickets... by Anonymous Coward · · Score: 0

      What do you expect? This is Jeff Cogswell.

      Just about everything he's had pimped on Slashdot so far has been complete and utter nonsense. His C# vs. Java article showed a fundamental misunderstanding of the technologies he was dealing with, comparing a lightweight Java servlet with a full blown heavy weight ASP.NET MVC application which does much more work by way of routing.

      He should really have been introduced in the summary as:

      "In a previous posting, pretender, wannabe, and attention whore Jeff Cogswell"

      I guess he's friends with the Slashdot editors or something, who knows, but like John McAfee and Bennet Hasselton he's one of those names that keeps popping up here with special prominence granted by the editor and who then goes on to spout nonsense that's often worse than the average quality you find in the comments meaning you might as well just tell them to spout their opinion in the comments so it can be lost amongst the rest of the dross.

      I'm half expecting them to give a regular slot to Florian Mueller soon.

    8. Re:Crickets... by Anonymous Coward · · Score: 0

      WTF? less meth please

  3. butt goat fart by For+a+Free+Internet · · Score: 0

    Nobordy uses Windose anymorr, it is nowt a ipon.

    --
    UNITE with the Campaign for a Free Internet because today, our future begins with tomorrow!
    1. Re:butt goat fart by Anonymous Coward · · Score: 1

      Dude, lay off the meth.

  4. Calling home threw off the results? by iYk6 · · Score: 5, Insightful

    Did calling home really throw off the results? Since that is something that ordinary users would have to put up with, I would think it should be part of the test. It might be difficult to get an average, but testing Intel's compiler only when it is at its fastest doesn't seem fair.

    1. Re:Calling home threw off the results? by Darinbob · · Score: 1

      Does the speed of compiling matter that much compared to the speed of the resulting code? I know that C++ compilers can be extremely slow to run but it shouldn't be a major concern unless it's so slow that an incremental build is wasting enough time that you're off getting another coffee or donut while waiting.

  5. does the Intel one still slow down on AMD systems? by Joe_Dragon · · Score: 3, Interesting

    does the Intel one still slow down on AMD systems and or trun out code with AMD slow down blocks?

  6. Representative benchmarks? by jameson · · Score: 4, Interesting

    Based on his description, he is using a very synthetic benchmark:

    The code I’m testing contains no #include directives, and makes use of only standard C++ code. It starts with one class, and then is followed by 6084 small classes derived from various instantiations of the template classes. (So these 6084 classes are technically not templates themselves.) Then I create 6084 instantiations of the original template class, using each of the 6084 classes. The end result is 6084 different template instantiations. Now, obviously in real life we wouldn’t write like that (at least I hope you don’t).

    So in his own words, the code does not reflect realistic compiles. There is no reason to assume that the result generalise to any programs that anyone actually cares about.

    Also, there are no error bars of any kind listed.

    In other words, I have no reason to assign any meaning to these numbers.

    1. Re:Representative benchmarks? by OzPeter · · Score: 1

      In other words, I have no reason to assign any meaning to these numbers.

      Given the reaction to the previous article I don't know what this guy is even trying to do.

      And why 6084? What is so special about that number?

      --
      I am Slashdot. Are you Slashdot as well?
    2. Re:Representative benchmarks? by c++ · · Score: 4, Insightful

      In other words, I have no reason to assign any meaning to these numbers.

      Given the reaction to the previous article I don't know what this guy is even trying to do.

      And why 6084? What is so special about that number?

      6084 / 2 % 100 == 42

      That is meaning enough.

    3. Re:Representative benchmarks? by Ravaldy · · Score: 3, Insightful

      The article is alright but not one I would use to pick a compiler. IMHO the resulting EXE is more important than the compiler processing time. I've dealt with large sized applications and if structured properly, your build times on a modern computer should not be an issue.

    4. Re:Representative benchmarks? by Gothmolly · · Score: 1

      Its like your average Moronix linux kernel benchmark, where they have bars and numbers with no scale. Basically, look at me, I'm an attention-whore nerd!

      --
      I want to delete my account but Slashdot doesn't allow it.
    5. Re:Representative benchmarks? by Anonymous+Crowbar · · Score: 2

      Not sure if anyone already mentioned this but my take is it is NOT how fast the project compiles but rather the performance of the executable. If one is building race cars it's not how fast they come off the assembly line, it's how fast the cars go on the track.

    6. Re:Representative benchmarks? by EMN13 · · Score: 2

      Oh and one minor detail: did you see the final compiled code sizes and how much smaller the optimized versions are (esp. clang!). I'm willing to bet the entire benchmark just code "optimized away" by dead code elimination; and that's an entirely unrealistic situation... Also, where's the code? Is this reproducible?

      The benchmark isn't worth anything.

    7. Re:Representative benchmarks? by Kickasso · · Score: 1

      You build race cars, we build family sedans, mmkay?

    8. Re:Representative benchmarks? by rwiggers · · Score: 1

      I think you never had to use cygwin...
      Build time on modern computer could be an issue sometimes, but your statement that the performance of the binary is more important keeps valid.
      Not that the benchmark of the article makes any sense...

  7. Embarcadero cheap? by TechyImmigrant · · Score: 2

    I took a quick took at their website. It looks quite scammy, they only talk about how much you will save, not about how much it will cost.
    After clicking through the buy-now buttons twice, I found the C++ version was $4000.

    --
    I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    1. Re:Embarcadero cheap? by Anonymous Coward · · Score: 1

      Hmm, I looked at their website and see prices from $999 to $3999. The 64 bit compiler is included at the $999. Looks like all kinds of enterprise database stuff is in the $3999 version.

    2. Re:Embarcadero cheap? by gbrandt · · Score: 0

      Quoting a lower ranked answer because I use 64 bit Embarcaderos compiler and find it quite nice.

      "Hmm, I looked at their website and see prices from $999 to $3999. The 64 bit compiler is included at the $999. Looks like all kinds of enterprise database stuff is in the $3999 version."

    3. Re:Embarcadero cheap? by TechyImmigrant · · Score: 1

      Well there were lots of options. I clicked on the one with C++ in it.

      Either way, $999 or $3999 is a barrier to me using their products. I could use it in production, but in production I'm going to use the tools that I'm fluent in because they're free and so I get to use them everywhere.

      I was questioning TFA, because it implied that Embarcadero was cheap/free. It isn't.

      --
      I should use this sig to advertise my book ISBN-13 : 978-1501515132.
    4. Re:Embarcadero cheap? by Anonymous Coward · · Score: 0

      They also release new major builds every year instead of service packs or updates. The last 2 major releases were only 6 months apart.

  8. Re:does the Intel one still slow down on AMD syste by fuzzyfuzzyfungus · · Score: 4, Interesting

    My understanding is that they never explicitly 'slowed down' AMD systems; but that the binaries produced by their compiler refused to honor the capabilities flags of non-intel processors (eg. even if an AMD CPU lists 'SSE2, SSE3' among supported instructions, it would get the fallback to non-SSE instructions, while Intel CPUs would get whatever their supported instructions lists specified). No actual 'here be lots of NOPs for no reason'; but x87 on a machine that can do recent SSE is probably enough to achieve the same effect...)

  9. Executable size by istartedi · · Score: 1

    LLVM has got to be dynamically linking and stripped by default. There are switches on the other compilers that will let you do that, and it looks like they're being ignored.

    --
    For all intensive purposes, "whom" is no longer a word. That begs the question, "who cares"?
    1. Re:Executable size by Anonymous Coward · · Score: 0

      On the VC one he most certainly is leaving them in. VC puts an ass load of debug info in if you dont explicitly tell it not to. It also by default links in a few extra libraries you may or may not need. He is also using /Ox on a synthetic codebase. So depending on the code it may be /Ot == /Os. With some hand wavy of 'dont know why'. Then on the VC compiler he did not do /Od (disable any optimizations) for his disable test. At that point I concluded this dude was speaking from his ass.

      Even comparing G++ to llvm can be weird. As they include different types of optimizations from O2 to O3 as each project considers something things more safe or not.

      Most of this info can be retrieved from either the man pages or /? with the compiler.

      These sorts of benchmarks are of the type of 'kind of interesting' but tell me little about what these switches will do to my code.

      Many times if a C/C++ code base is taking a long time to compile it is because of header bloat. You can usually get a really decent speed up by just going thru your headers and making sure you *really* need them. Even doing the simple thing of boxing out the headers with #ifdefs/#ifndef patterns can help a bit.

    2. Re:Executable size by shutdown+-p+now · · Score: 1

      On VC, all debugging information goes into a separate file (.pdb).

  10. Generated code speed by c++ · · Score: 5, Insightful

    This doesn't test the speed of generated code. I like to know which compiler produces faster code when looking at benchmarks.

    1. Re:Generated code speed by Anonymous Coward · · Score: 0

      These benchmarks are worse than awful. Execution time? Runtime memory usage? STL and default allocator performance? These are things that actually matter. Compile time and executable size are useless. I haven't worried about executable sizes (except for PS3 spu or embedded code) for over a decade. Compile time is important, but this benchmark fails to give any indication of performance compiling large production systems.

  11. Inaccurate test. by johnnys · · Score: 5, Insightful

    According to the fine article, "The Intel compiler occasionally âoecalls homeâ to an Intel-owned Website to check licensing information. When it does so, it prints out a message about when the current license expires. I didnâ(TM)t use the results when that happens, since it would add time and skew the timing results. " WRONG. The tester should not have excluded these results where time was wasted with this nonsense: If WE the users have to put up with it, it SHOULD be included in the benchmarks.

    --
    Sometimes the "writing on the wall" is blood spatter...
    1. Re:Inaccurate test. by TheCarp · · Score: 3, Insightful

      while absolutely correct, and not just we put up with it.... if the license check is what the compiler does, then it is what it does. To leave those out is to be measuring something other than the real behaviour of the compiler in real situations.

      Hell if this is the case, can you really call the testing complete if he didn't simulate network conditions like, the licensing server being unreachable, or having really high latency?

      --
      "I opened my eyes, and everything went dark again"
    2. Re:Inaccurate test. by wonkey_monkey · · Score: 1

      There also doesn't seem to be anything about how good the executables the compiler produces are. Y'know, the whole reason for the existence of compilers.

      --
      systemd is Roko's Basilisk.
  12. Useless Comparison by Anonymous Coward · · Score: 0, Insightful

    Wow, lets look at what's being measured here, COMPILE TIME, and EXECUTABLE SIZE...what about the performance of the generated application.

    This doesn't measure optimizations, this just measures COMPILE TIME..I don't care if my applications takes 1 sec or 1 hour to compile, I care about the PERFORMANCE of the actual APPLICATION.

    This is just crap.

    1. Re:Useless Comparison by Anonymous Coward · · Score: 0, Insightful

      Wait until you grow up and are compiling systems with millions of lines of code that takes hours. We were happy when a compiler upgrade cut our times from 10 hrs, to 5. You may not care for your kiddie projects, but in the real world, time is money.

    2. Re:Useless Comparison by Anonymous Coward · · Score: 0

      I can compile the Linux kernel in a few minutes, then again, I have 32 cores at my disposal.

      When our devs are not compiling, they are testing, writing tests, or running tests.

      Again, application runtime, not compile time is the true test of a compiler.

    3. Re:Useless Comparison by Guspaz · · Score: 0

      Compiling millions of lines of code only takes hours if you're using a computer made in the 90s... and that's not even taking partial compiles into account.

      Compile time hasn't been a relevant metric for many years. After all, you're only going to compile once, but your code might run millions of times. I'd rather shave 100ms off an execution than 100s of a compile.

    4. Re:Useless Comparison by Hognoxious · · Score: 0

      In the real world, if the number of times it's compiled isn't miniscule compared to the number of times it's run you're doing it wrong.

      --
      Confucius say, "Find worm in apple - bad. Find half a worm - worse."
    5. Re:Useless Comparison by gstoddart · · Score: 1

      After all, you're only going to compile once

      I've worked at places where everything gets built every night to ensure nobody has broken anything.

      So, in some cases, you may well compile many many times.

      I'm not sure it's how I'd primarily choose a compiler, but in some places it could certainly be a factor.

      --
      Lost at C:>. Found at C.
    6. Re:Useless Comparison by Guspaz · · Score: 0

      And we use continuous integration such that we're always recompiling... but the compile speed is still not a major concern...

      Compile speed might batter when you're talking about JavaScript or Java or any other JIT language, but c++? Not so much.

    7. Re:Useless Comparison by Anonymous Coward · · Score: 0

      So all you guys do is write and run tests?

      When do you write actual code?

  13. Re:does the Intel one still slow down on AMD syste by K.+S.+Kyosuke · · Score: 2

    My understanding is that they never explicitly 'slowed down' AMD systems; but that the binaries produced by their compiler refused to honor the capabilities flags of non-intel processors

    Oh, my. Just how many major non-Intel x86-64 CPU vendors are there? AMD, and...? It's suspiciously similar to the ACPI and SecureBoot affairs, don't you think?

    --
    Ezekiel 23:20
  14. Re:does the Intel one still slow down on AMD syste by fuzzyfuzzyfungus · · Score: 1

    Well, our wiki overlords list 15 known CPU IDs; but one of them is intel, one is AMD, one is a VM, and most of the rest are the forlorn epitaphs of the fallen.

  15. Re:Here because I got timed out. by Anonymous Coward · · Score: 0

    If you're from the states, it's a bit early for the bottle isn't it?

  16. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    Oh, my. Just how many major non-Intel x86-64 CPU vendors are there?

    Why is it Intel's job to waste time supporting processors that aren't their own?

  17. Embarcadero? by Anonymous Coward · · Score: 0

    never heard of Embarcadero.

    I've heard of Borland, Watcom, Digital Mars and Bloodshed

    1. Re:Embarcadero? by jankoh · · Score: 1

      They seem to be the ones, that bought Borland... ('s division developing development tools, such as C/C++ compilers, and Delphi..) http://en.wikipedia.org/wiki/Embarcadero_Technologies

  18. Speed is always nice but... by mark-t · · Score: 2

    I'd just like to see a C++11 compiler for windows.

    1. Re:Speed is always nice but... by ebno-10db · · Score: 1, Troll

      Forget C++11 - switch to D. No, I can't do it either, but I can dream. C++11, for all that it has some nice features, continues the endless quest to make C++ ever more baroque, and to give it a syntax that makes the result of an obfuscated code contest look the same as any other code. It can be done so much more cleanly. In fact Walter Bright and Andrei Alexandrescu already have.

      One of the interesting things about D is that both Bright and Alexandrescu are serious C++ experts. I don't think Bright decided to implement "C++ done right" because he didn't understand the features and nuances of C++.

    2. Re:Speed is always nice but... by gbrandt · · Score: 1

      Embarcadero's 64 bit compiler uses CLANG 3.1, so it has most of C++11

    3. Re:Speed is always nice but... by Anonymous Coward · · Score: 0

      The version of g++ currently distributed with MinGW has one of the largest lists of C++11 features. I have yet to hit a feature that I want to use but isn't implemented.

    4. Re:Speed is always nice but... by Billly+Gates · · Score: 1

      VS 2013 which just came out supports C++ 11. At least that is what MS is saying.

    5. Re:Speed is always nice but... by mark-t · · Score: 1

      No, it doesn't. Most notable omissions include constexpr, user-defined literals, inheriting constructors, and attributes. There are others, but those are the big ones, IMO.

    6. Re:Speed is always nice but... by gbrandt · · Score: 1

      Did you somehow miss the 'most' in my comment. It has what CLANG 3.1 supports which is quite a chunk.

    7. Re:Speed is always nice but... by jonwil · · Score: 1

      They have just released a "tech preview" of the compiler that (per the Microsoft provided info) supports constexpr and inheriting constructors with a clear roadmap to supporting the rest of C++11/C++14 (including user defined literals and attributes)
      http://blogs.msdn.com/b/vcblog/archive/2013/11/18/announcing-the-visual-c-compiler-november-2013-ctp.aspx is the announcement from the Visual C++ guys about it.
       

    8. Re:Speed is always nice but... by fnj · · Score: 1

      Clang 3.1 is prehistoric. Clang is at 3.3 now and really *is* pretty complete C++11. Screw Embarcadero.

      Gcc 4.8, which is current, is also pretty complete C++11.

    9. Re:Speed is always nice but... by Anonymous Coward · · Score: 0

      Yep the express version is a free download available right now if you want to use it for free!

    10. Re:Speed is always nice but... by mark-t · · Score: 1

      I suppose it depends on the importance that one weights those features.

      There are three distinctive languages features of C++11 that sold me on using it once and for all: lambdas, constexpr, and user-defined literals. Of these three, Visual Studio 2013 has only one. One out of three isn't "most"

    11. Re:Speed is always nice but... by mark-t · · Score: 1

      With 32 languages in higher demand than D as of this month, I'm not sure that's a particularly wise investment of my time.

    12. Re:Speed is always nice but... by Anonymous Coward · · Score: 0

      Look no further than mingw-w64. Lots of big open source projects (Blender included) are using it for windows builds.

      It even does and stuff.

    13. Re:Speed is always nice but... by gbrandt · · Score: 1

      Wow, a bit of hate on for Embarcadero?

    14. Re:Speed is always nice but... by fnj · · Score: 1

      I don't waste any energy actively hating them. They are irrelevant to me. They tack on a GUI which many find helpful for certain task scenarios to an absolutely free compiler, which isn't even necessarily up to date, and then charge an absurd premium. It's an option.

      If I need to do any work in Windows I just use free Cygwin or MinGW.

  19. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    If you're trying to figure out what features are available with only the vendor ID, you're doing it wrong. "GenuineIntel" and "AuthenticAMD" have never been enough to tell you anything about what SSE operations a chip can do. And if every other vendor can parse the rest of the CPUID data, Intel can too (or they can fuck off, IMO).

  20. I call BULLPUCKY! by Anonymous Coward · · Score: 0

    I guess they don't teach science in Computer Science, because the Linux post from 23 days ago doesn't state the compiler options that were used. Even after having the glaring omission pointed out by a commenter 20 days ago, the problem still hasn't been fixed. Fixing it should be a priority over moving on to Windows.

  21. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 1

    The reason there are these feature flags is that, they can be used to identify the capabilities of the processor. It's not supporting processors that aren't theirs, it's supporting the same features in all processors that support the features.

  22. Invalid Benchmark - Who Cares by MerlynEmrys67 · · Score: 3, Insightful

    Benchmarking compilers on how long it takes to compile would be like benchmarking cars based on how long it takes to fill the gas tank.
    There are so many things that can affect compile time more than the compiler - and the end customer really doesn't care anyway. Frankly, if you want a 3-5x speedup, just put the whole thing on an SSD and let it fly.

    --
    I have mod points and I am not afraid to use them
    1. Re:Invalid Benchmark - Who Cares by Guspaz · · Score: 1

      benchmarking cars based on how long it takes to fill the gas tank.

      Electric cars have made that an extremely relevant benchmark... and marketing stunts involving battery swaps have indeed benchmarked how long it takes to fill a tank.

    2. Re:Invalid Benchmark - Who Cares by MobyDisk · · Score: 1

      Electric cars fill their gas tanks very quickly!

    3. Re:Invalid Benchmark - Who Cares by Anonymous Coward · · Score: 0

      > Benchmarking compilers on how long it takes to compile would be like benchmarking cars based on how long it takes to fill the gas tank.

      That's a true if your typical auto consumer refills his or her gas tank hundreds of times every work day.

    4. Re:Invalid Benchmark - Who Cares by Anonymous Coward · · Score: 0

      Who the fuck does a full compile 10 times a day, much less hundreds???

  23. Compiler++ by jones_supa · · Score: 1

    Also Microsoft's Jim Radigan held a cool presentation in GoingNative 2013 where he reveals some optimization tricks done by the MSVC++ compiler. It also shows some screenshots where Windows is being compiled on a monster multi-core machine.

  24. Re:does the Intel one still slow down on AMD syste by Richard_at_work · · Score: 2

    VIA was also one that was affected by Intels compiler behaviour.

  25. I win! by Anonymous Coward · · Score: 0

    My compiler instantly produces a 0-byte executable for any codebase. You can't actually run the resulting file, but since all we care about here is compile time and executable size, I guess my compiler wins!

    1. Re:I win! by dyingtolive · · Score: 1

      I would argue that your executable returns with expected result nearly instantaneously.

      --
      Support the EFF and Creative Commons. The war is coming, and they're supporting you...
  26. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    There were checks for "GenuineIntel" in the cpuid result (http://www.agner.org/optimize/blog/read.php?i=49). The only thing that could possibly be worse would be *excluding* "AuthenticAMD". And that's debatable.

  27. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    Just use libsimdpp ( https://github.com/p12tic/libsimdpp ) or any of the myriad similar wrappers. With modest time investment you get almost optimal implementation for multiple instruction sets on any compiler you use.

  28. VS version by Anonymous Coward · · Score: 0

    Am I blind or is every compiler version specified except for the Visual Studio one? Version 18 (which ships with 2013) is the latest.

    Also, the VS compiler times are reversed. All of the others listed in the article are "No optimization" followed by "full optimization".

    Final nitpick, /Ox favors execution speed

  29. Re:does the Intel one still slow down on AMD syste by zubab13 · · Score: 1

    Just use libsimdpp ( https://github.com/p12tic/libsimdpp ) or any of the myriad similar wrappers. With modest time investment you get almost optimal implementation for multiple instruction sets on any compiler you use.

  30. Re:does the Intel one still slow down on AMD syste by fuzzyfuzzyfungus · · Score: 3, Insightful

    If memory serves, their argument varies (depending on whether the FTC appears interested or not) between 'fuck you, it's the Intel compiler collection, and it'll do what's best for Intel. Go suck an Opteron if you like AMD so much.' and 'Gosh, we sure know about the capabilities flags; but we can't be sure of the details of other vendors'(*cough*shoddy, probably reverse engineered illegally*cough*) implementations of certain complex features, and our customers expect our compiler suite to provide stable, correct output, so reverting to the x87 codepath is our only real option..."

  31. Re:does the Intel one still slow down on AMD syste by fuzzyfuzzyfungus · · Score: 1

    Oh, VIA... I'm honestly always a bit surprised to see them still trying.

    Back before Intel got (slightly) serious about cheap, with 'atom' and AMD got slightly serious about low-power, with some of their APUs, they made more sense, (in particular, a number of rather interesting x86 embedded specialty boards were VIA based, for situations too low-power or cost constrained for a p3/p4); but lately they've been a much tougher sell. Still some interesting specialty stuff; but 'Unichrome' graphics are such a clusterfuck to deal with that they make AMD look like GPU driver gods, and Intel look (while slow) nearly infallible, and both Intel and AMD have put some rather more aggressive parts into what used to be VIA's playground.

  32. Re:does the Intel one still slow down on AMD syste by K.+S.+Kyosuke · · Score: 1

    With modest time investment you get almost optimal implementation for multiple instruction sets on any compiler you use.

    I'm using ClozureCL and SBCL. I don't think that this is going to work. :-)

    --
    Ezekiel 23:20
  33. Re:does the Intel one still slow down on AMD syste by zubab13 · · Score: 1

    Sorry, my post was directed to the parent of your post. Somehow I misclicked somewhere and didn't notice.

  34. Re:does the Intel one still slow down on AMD syste by K.+S.+Kyosuke · · Score: 1

    Doesn't matter, it's still an interesting thing to study. Maybe if I ported and macroified the whole thing for ClozureCL, some good use for me could come from it, too! :-)

    --
    Ezekiel 23:20
  35. Intel compiler does not phone home for licensing by stevel · · Score: 4, Informative

    The Intel compilers do NOT "phone home" for licensing. What they do "phone home" for is to send anonymous usage data. When you install, you're asked if you want to opt in to this - it is not enabled by default. Licensing is done entirely locally for single-user licenses. See http://software.intel.com/en-us/articles/software-improvement-program for more information.

  36. Re:does the Intel one still slow down on AMD syste by K.+S.+Kyosuke · · Score: 1

    Why would they need to "reverse engineer" features (instruction set extensions) that are already publicly documented for the benefit of compiler writers and assembly language programmers?

    --
    Ezekiel 23:20
  37. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 2, Interesting

    Long, long ago some review site ran a Via CPU based system while spoofing the CPU ID to appear as an Intel CPU of similar capabilities.
    They expected a few percent gain in the FP and INT benches, but oddly got an 8-fold increase in reported memory bandwidth. The other benchmarks appeared to reflect a real increase in memory performance.

    Don't wipe your arse with Intel, they're so dirty you'll end up shittier.

  38. He forgot OpenWatcom by Anonymous Coward · · Score: 0

    I used that one a lot when I was younger. It is a free C/C++/Fortran compiler for Windows, OS/2, DOS and Linux. It has an integrated IDE and also does cross-compiling.

  39. Too many words by Anonymous Coward · · Score: 0

    Given how a comparison like this is fairly objective for a variety of reasons, it would have been a much better use of the readers' time to just do a final chart which shows you which compiler, on average, and from his specific tests, performed the best. Then toss in another chart which compares binary size, even though people aren't really going to care as much about that.

  40. Re:does the Intel one still slow down on AMD syste by Billly+Gates · · Score: 1

    A lot.

    Typing this in a AND Phemom II black edition which is very fast and not that far off from an i7 back in 2010 when I purchased this. True the newer ones are slower per ghz sadly.

    But what if AMD's next chip kicked ass! Remember the Athlon and the later AthlonXPs were the fastest x86 chip you could buy a decade ago?

    Tomshardware would include Skyrim and other Intel compiled apps and whine how slow their inferior AMD chips are and intel fan boys would gleam ... but regardless I have a problem with Intel.I do not want to pay more money for a CPU that provides less value.

    Even if you do want to argue on this price/performance I get unlocked bios that can support virtualization. Not $900 computer to run VMware natively. Any AMD chipset can run it if you turn it on in the bios!

    To answer the grandparent YES INTEL compilers DO CRIPPLE AMD if they do not include SSE3, registers, and other items and use non IEEE standard FPU x87 to make their cpus look better. It is like Nvidia crippling OpenCL to force developers to make CUDA apps who then go on how slow AMD's radeons are etc.

  41. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    Why is it Intel's job to waste time supporting processors that aren't their own?

    You mean like all the CPUs based on the X86_64 (aka AMD64) instruction set? You know the instruction set invented by AMD that Intel licenced when it became apparent that it would kill Itanium.

    Seriously, Intel devised a scheme to determine if a CPU supports advanced features. They documented the scheme and told programmers that it was the correct way to determine the feature set of a CPU. Then they create a compiler that does not use the documented method. In fact, their compiler went out of its way to ensure that only Intel CPUs would actually use the advanced features even if a CPU reported that it could.

    F*ck Intel and f*ck any company that would waste my time by doing such underhanded things. I have no respect for Intel and I don't use their sh!t any more.

  42. Businesses care by Anonymous Coward · · Score: 0

    Right now, I'm posting this as I wait for a brain-dead compiler to complete its task. This is productive time lost because we've chosen a compiler which can't figure out dependency management, takes a long time to compile, and needlessly recompiles unchanged files. Compile time is the single largest user-changeable component of the compile-edit-debug cycle.

    It matters to those with a deadline to meet, or to those who'd like to see their families once in a while.

  43. Re:does the Intel one still slow down on AMD syste by eulernet · · Score: 1

    My understanding is that they never explicitly 'slowed down' AMD systems

    You are wrong:

    "Overview of CPU dispatching in Intel software"
    http://www.agner.org/optimize/blog/read.php?i=49#121

  44. Posting to cancel moderation. by Shemmie · · Score: 1

    Posting to cancel moderation.

  45. Re:does the Intel one still slow down on AMD syste by exomondo · · Score: 1

    But what if AMD's next chip kicked ass! Remember the Athlon and the later AthlonXPs were the fastest x86 chip you could buy a decade ago?

    It could theoretically happen, but the Athlon's success was as much about AMD coming up with a decent architecture as it was Intel simultaneously dropping the ball with the Netburst architecture.

  46. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    My Via QuadCore Artigo comes tomorrow in the mail. I recently fell in love with these processors because of the super low power without sacrificing a lot. I run gentoo and develop C++ apps. I have an FX8120 with a cooler so huge that it blocks two memory slots and ran it all day long at 5.5ghz stable. But with the 8800GTX and that CPU I was idling at 230 watts. Under load 500-700 on my Kill-A-Watt.

    The Via QuadCore idles around 10-15 watts and has a total TDP of 25 watts under 100% load. With a fanless box, no CDROM, and a high end SSD with caching; it does everything I need at even less power. Hell then you undervolt it and underclock if you want 2-5 watts idle.

    The point is I went from a 230watt idle and ~650watt load computer to a 10-15 watt idle and 25watt under load computer that does the same stuff. Plays videos, flash on webpages isn't laggy and generally I'm happy to see my power bill drop. The room is quiet and cool. Unbelievable how wasteful that 8-core rig was. I'll just take it to work and make it a remote distCC host for the odd huge compile.

    The QuadCore is even faster and has a rather impressive stock video card. Can't wait to get Gentoo on it tomorrow afternoon. I put the Kill-A-Watt on the desk so I can always see how much power it uses. My C7-D under 15.x load averages for roughly 3 days, tends to meter 0.89kWH. My desktop hit that in 15 minutes or less under load. I'm happy.

    Next up to run this rig off my solar panels.....

  47. Comparisons by Anonymous Coward · · Score: 0

    For the next benchmark, why not compare Windows, Mac, Linux, Android, BeOS.

    The basis for comparison can be "how long does it take to open the clock application, measured from the desktop". We won't count boot time, and we can run on a virtual machine to equalize the compartison.

    The numbers would be just as meaningless, and still be better than that useless benchmark.

  48. The only way to win is not to play by radarskiy · · Score: 1

    How good would the Intel compiler have to be at optimizing on AMD processors to avoid accusations that they were deliberately slowing things down?

    1. Re:The only way to win is not to play by sjames · · Score: 1

      You should know that you could get an instant (and large) performance boost by patching the produced binary to always assume it was running on Intel. So I would say not actively sandbagging the performance would be a reasonable start. That is, use the same code path for the same set of relevant feature flags.

  49. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    Did anyone ever hack the compiler to remove this check? ie. just assume the chip is a genuine Intel? I'd be interested in the results.

  50. He measured single-threaded compiles?!!! by Bruce+Dawson · · Score: 2

    Visual C++ has this handy /MP option which tells the compiler to do multi-threaded compiles. On some of our build machines (with 16 cores) this gives an almost linear increase in build speeds. It's obvious from the author's discussion of multi-core that he is not aware of this option and did not use it.

    A performance benchmark which doesn't turn on the go-fast option is not going to produce meaningful results.

    The author also doesn't discuss debug symbols. VC++ generates debug symbols by default, whereas the other compilers do not. Generating builds without symbols is not a reasonable scenario for most builds, so this makes the file size comparisons rather meaningless.

  51. Re:does the Intel one still slow down on AMD syste by Anonymous Coward · · Score: 0

    Now the Via quad core is equally overclocked in order to make a valid comparison, right?

    And by the way, Flash sucks at video. Take any computer where Flash lags and pegs the CPU and play an un-transcoded flv in ANY other player, and it will be perfectly smooth while putting almost no load on the computer. It's a shame Adobe ate its only competition and ruined all of the products it acquired.

  52. Re:does the Intel one still slow down on AMD syste by sjames · · Score: 1

    That is a form of explicitly slowing down and a rather blatant one. Like if someone decides to 'run' the 100 meter by hopping on one foot.

  53. Re:does the Intel one still slow down on AMD syste by sjames · · Score: 1

    Naturally, they wouldn't. It's just liars lying to people not technical enough to catch it.

  54. Re:does the Intel one still slow down on AMD syste by sjames · · Score: 1

    It's not really, but it is their job not to sandbag them. The ICC isn't a freebie you get with the CPU.