Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Provide benchmarks on MSVC #84

Open
brunocodutra opened this issue Apr 1, 2016 · 13 comments
Open

Provide benchmarks on MSVC #84

brunocodutra opened this issue Apr 1, 2016 · 13 comments

Comments

@brunocodutra
Copy link
Collaborator

We will have to deal with broken support for newer standards.
Two approaches strike me as the most obvious:

  • Manually implement some nasty logic to decide what libraries to enable for each compiler version.
  • Try compiling each benchmark (rendered for n=1) before deciding whether the selected compiler version is able to handle a library.
@brunocodutra
Copy link
Collaborator Author

I'm fond of the second approach, because it requires the least maintenance and because it looks cool.

@brunocodutra
Copy link
Collaborator Author

I'm fond of the second approach, because it requires the least maintenance and because it looks cool.

Forget it, too complex to be worth it.

@ldionne
Copy link
Owner

ldionne commented Apr 3, 2016

Sorry, I was out for the weekend. The issue with the second approach is that we won't know whether it's a compiler failure or a problem in the benchmark itself. IOW, we wouldn't be able to "test" that the benchmarks are not broken.

@brunocodutra
Copy link
Collaborator Author

Sorry, I was out for the weekend.

No worries.

Do you think you can setup Appveyor to push benchmark results in a manner similar to Travis?

EDIT: For MSVC only

@brunocodutra
Copy link
Collaborator Author

Also, just realized we never tested MSVC, as the Ninja generator picks MinGW.

EDIT: Fixed by 78b35bd (WIP)

@brunocodutra
Copy link
Collaborator Author

Surprise surprise, MSVC sets __cplusplus to 199711L.

Ideas?

@ldionne
Copy link
Owner

ldionne commented Apr 4, 2016

That's because MSVC is not C++11/14 compliant AFAIK.

@ldionne
Copy link
Owner

ldionne commented Apr 4, 2016

So there's nothing to do here; any benchmark that actually require full C++11/14 compliance can't support MSVC. Now, we could go with more granularity and require specific features cxx_constexpr, etc.. using COMPILER_FEATURES in CMake, but that's really not worth the added complexity, I think.

@brunocodutra
Copy link
Collaborator Author

That's because MSVC is not C++11/14 compliant AFAIK.

It isn't, but most libraries we actually care about don't need it either. Also see #93.

@brunocodutra
Copy link
Collaborator Author

As a matter of fact, Metal works from MSVC 14 onwards and Brigand from MSVC 12 onwards, not to mention MPL and Fusion which date back to over a decade ago.

I haven't found any special requirements for Meta, so I thought it could be handled by MSVC 14 least, but it appears it cannot. Also surprising is the fact MSVC 12 doesn't appear to handle std::tuples well and that it also chokes on test.one_template_many_datasets. I'll update the version checking later today before submitting a PR.

@ldionne
Copy link
Owner

ldionne commented Apr 5, 2016

Ok, so if I'm not mistaken we only need to run and push the benchmarks on MSVC from Appveyor, right?

@brunocodutra
Copy link
Collaborator Author

Ok, so if I'm not mistaken we only need to run and push the benchmarks on MSVC from Appveyor, right?

Correct, then update index.html on gh-pages.

@ldionne ldionne changed the title [gh-pages] Provide benchmarks on MSVC and GCC 5 Provide benchmarks on MSVC Apr 21, 2016
@ldionne
Copy link
Owner

ldionne commented Apr 21, 2016

^ Because GCC 5 is already generated on Travis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants