I'm a gcc user partly because of the optimization. I mean it's a pretty small difference. But still for scientific stuff gcc is slightly better I think. There's not much difference though and it basically comes to personal preference.
I haven't dealt with HPC in a while, but Intel C compiler against MKL libraries were fastest CPU, and Nvidia CUDA was slightly easier to develop than OpenCL for other cards. I'm not sure if the situation's changed.
For my current applications, I use NumPy compiled against Intel MKV installed as a binary. It works great.
Actually when it comes to C++ 23 library features, MSVC is ahead of both. In fact, as far as I can tell, MSVC is the only compiler that fully supports all C++ 20 core language features at the moment. So credit where credit is due, MSVC has gotten way way better the past few years. Visual Studio is still awful, but the compiler has become quite competent.
they can't compete with clang and gcc anymore, not with proprietary compilers, there is a fuck tons of companies using gcc and clang, and investing in thoses, microsoft can force it's users, but can't with apple and google etc
I haven't touched compilers in a while, but I was a dirty little MS pig boy back in college. Qt with MSVC just made sense for me, with the single exception of non standard byte lengths for longs (almost cost me a class due to not using std uints, totally my bad but you don't really expect compilers to understand basic data types differently).
The true shitfuckassface experience for me was ICC. Stupid little pig boy decided he wanted his Qt working with ICC, due to all dem optimizations for Intel CPUs. After hours of debugging nonsense errors and janking my way through Qt code which was way above my head, I finally got a Qt build, only to have ICC find thousands of completely removed errors in a project where no other compiler would find errors.
Yeah that was the day I stopped caring for C++, stopped licking intel's ass, and started getting ever so slightly radicalized due to the lies of the republic.
If data structures weren't working with MSVC, you're probably working with non-portable code in the first place. Don't assume an int is 32 bits long!
Oh absolutely! I was starting out during this time, and started using memcpy for a uni project, hardcoding byte sizes to what I assumed long's size was, instead of checking or using standardized data types (because I didn't even know they existed). The result was such a mess, exacerbated by the good ol "let's write it all in one go and run it when we're done". Boy did I suffer in that class.
The only way I can ever get stuff to compile on windows is MSVC but I don't like having to install the entire .net cinematic universe. It's no android but christ on a cracker man.