-
-
Notifications
You must be signed in to change notification settings - Fork 3.7k
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
Up for grabs: Port benchmarks to BenchmarkDotNet #666
Comments
I'd love to give it a go! I'm not familiar at all with the current performance tests setup in Dapper, nor do I have experience with BenchmarkDotNet. I'll try to get up to speed on these. If you already have a rough idea and/or pointers on how you want it to look like, please let me know. Also, I won't touch the computer during the Christmas break, so if someone intends to jump on this, please go for it, first arrived first served 😉 Edit: I put together a very early version of a project using BencharkDotNet in the devil-benchmarks branch 😈. Could you have a quick look and let me know if that's roughly what you had in mind? |
Please let me know how I can help. I'm a newb with contributing to OSS, been looking for a way contribute. Likewise won't be in service until after the new year. |
In https://github.com/FransBouma/RawDataAccessBencher I have many microORMs and full ORMs setup for fetch benchmarks, including Dapper (with easy to use profiling setup too, to profile a given benchmark). I once started to port this to BenchmarkDotNet, but at the time it couldn't deal with a separate config file so I stopped that port. Perhaps an idea to port that instead? It's already a separate project. Not sure if the benchmarks in my project (set fetches, individual fetches, eager load and async) cover all benchmarks you have in this project, but it can be an easy way to get started quickly. |
I've got a minimal start locally of Dapper backed by SQL Express, it's alive!! Would be good to share the work. Perhaps a branch? |
@phillip-haydon absolutely. Sorry for being quiet here - so, so many libraries in play at the moment needing |
This is based on BenchmarkDotNet (while preserving the legacy format with minor improvements as well - legacy runs much faster). See #666 for details. Not an ominus number at all. Note: this code will get a bit simpler with BenchmarkDotNet categories, see dotnet/BenchmarkDotNet#248 for details.
Done! |
Currently our performance tests are here: Dapper.Tests/PerformanceTests.cs
These are hard to setup and run. The server side (some tests may use multiple RDBMS platforms) of this with multiple backends is not really avoidable, but re-running them and adding to them should be easier.
I propose we separate these out into another project (
Benchmarks
, in the root) and port them to use BenchmarkDotNet. This will give us:netstandard
build)[Configuration]
)We can have
netstandard
and not builds for that project, excluding the non-netstandard
providers in#ifdef
s for the case where provider or library X doesn't have a .NET Core-compatible build yet.Related issues:
Does anyone want to tackle this? It should be pretty self-contained and a good way to explore .NET Core and the benchmarking world. I'll be happy to review. We could use the help.
The text was updated successfully, but these errors were encountered: