Commit Graph

27 Commits

Author SHA1 Message Date
Marc Gravell d7c16035d2 fix codegen error in value-type multimap #2005 (#2022)
in horizontal multi-map, don't "returnValueLocal = null" for value-types (invalid IL)
fix #2005
2024-01-02 15:32:04 +00:00
Andrii Kurdiumov 4160c9f344 Update benchmarks with latest results. (#2016)
* Update benchmarks with latest results.

* Address PR feedback
2023-12-18 12:21:48 +00:00
Marc Gravell aecffecae1 attempt NRT makeover (#1928)
* attempt NRT makeover

- annotate NRTs on GridReader API
- add protected access to some of the GridReader internals
- switch GridReader callbacks to be more type-independent

docs

lib updates; deal with yellow warnings and test failures (SQL server certs and cancellation surfacing differently)

fix break

simplify proposed GridReader changes to protected OnBeforeGrid and OnAfterGrid[Async]

Builds: Bump library versions (#1935)

Tests: Upgrade dependencies for Dependabot (#1936)

I'll do a pass at all of these later, but getting CVE versions out of the pipe.

Resolving 4 alerts here: https://github.com/DapperLib/Dapper/security/dependabot

merge and lib updates

allow Identity to be constructed on-the-fly inside GridReader

fix build warnings

include readme

rev minor

- enable [SkipLocalsInit] everywhere
- use NET5_0_OR_GREATER
 for remoting check

# Conflicts:
#	Dapper/CommandDefinition.cs
#	Dapper/DefaultTypeMap.cs
#	Dapper/SqlMapper.Async.cs
#	Dapper/SqlMapper.IDataReader.cs
#	Dapper/SqlMapper.Link.cs
#	Dapper/SqlMapper.cs
#	Directory.Build.props

* shipped, not unshipped

* fixup SqlBuilder; use is null / is not null

* use central package management (#1949)

* Nullable test tweaks

* Nuget: let's just remove it!

* 2 test fixes from review

* fix FindExplicitConstructor

* add GetPropertySetterOrThrow

* fix NRT on FindConstructor

* DapperRow: value is object?

* use NotNullWhen

* make constructor problem more obvious

* test fixes

---------

Co-authored-by: Nick Craver <nrcraver@gmail.com>
2023-09-12 15:58:49 +01:00
Marc Gravell ff98f8dbf1 answer #1950 using BDN (#1951) 2023-08-21 11:29:37 +01:00
Nick Craver 136dc11f0c Tests: Upgrade dependencies for Dependabot (#1936)
I'll do a pass at all of these later, but getting CVE versions out of the pipe.

Resolving 4 alerts here: https://github.com/DapperLib/Dapper/security/dependabot
2023-07-08 11:43:58 -04:00
Raphael Schweizer cb85070a39 EF Core benchmarks for connections w/ passwords (#1700) 2022-01-04 08:54:19 -05:00
Sergei Khlebnikov 80719d00f3 Added more use cases RepoDB benchmarks (#1710) 2021-10-10 09:29:55 -04:00
Nick Craver 29f3befae2 Merge pull request #1662 from DapperLib/craver/split-dapper.contrib 2021-05-10 08:58:59 -04:00
Andrii Kurdiumov 069df56ec1 Update version of SqlMarshal to fix warnings
This address feedback in #1646
2021-05-10 17:50:16 +06:00
Nick Craver e9bdcb2352 Merge pull request #1602 from vbilopav/main 2021-05-09 07:02:09 -05:00
Nick Craver 60d5a05919 Update benchmarks/Dapper.Tests.Performance/Dapper.Tests.Performance.csproj 2021-05-09 06:57:02 -05:00
Vedran Bilopavlović ae65ef10d0 Use ItemGroup Condition != 'net462' in poject #if !NET4X in the file itself 2021-05-09 12:16:01 +02:00
Vedran Bilopavlović 5233555029 make bechmark test description shorter 2021-05-09 12:04:43 +02:00
Nick Craver 11931f9e6c Dapper.Contrib: removal (repo split)
Dapper.Contrib is now located at https://github.com/DapperLib/Dapper.Contrib
2021-05-08 20:36:15 -04:00
Nick Craver b452fb1999 Merge pull request #1603 from Zubaloo/main
The used Map method is asynchronous, hence without waiting for operation to complete the benchmark is only counting the query invocation time.
2021-05-05 21:24:33 -05:00
mgravell e26aa7b2d6 fix #1656 (git reorg) 2021-04-29 11:04:12 +01:00
Alexandr Buzadji f499062bd2 Use FirstOrDefault method instead of Map in Belgrade benchmark.
`FirstOrDefault` is probably meant to be used here, as there is selected and returned a single record by ID.

Also changing the benchmark description, as "ExecuteReader" looks to be an obsolete name of the method that was used before refactoring.
2021-04-27 22:22:25 -04:00
Alexandr Buzadji 64685835ae Belgrade benchmark bug fix.
The used Map method is asynchronous, hence without waiting for operation to complete the benchmark is only counting the query invocation time.
2021-04-27 22:22:25 -04:00
Nick Craver abd625cbf8 Merge pull request #1626 from stevedesmond-ca/repodb-benchmark
Add basic RepoDB benchmark
2021-04-27 17:30:54 -05:00
Nick Craver afefded8cf Merge pull request #1642 from kant2002/kant/cleanup 2021-04-27 16:58:28 -05:00
Andrii Kurdiumov bc334ca679 [Benchmarks] Add SqlMarshal benhmarks
[SqlMarshal](https://github.com/kant2002/sqlmarshal) is NativeAOT friendly mini-ORM which uses source code generators.

```
// * Summary *

BenchmarkDotNet=v0.12.1, OS=Windows 10.0.19042
Intel Core i7-6700HQ CPU 2.60GHz (Skylake), 1 CPU, 8 logical and 4 physical cores
.NET Core SDK=5.0.201
  [Host]   : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT
  ShortRun : .NET Core 3.1.13 (CoreCLR 4.700.21.11102, CoreFX 4.700.21.11602), X64 RyuJIT

|            ORM |                        Method |  Return |     Mean |    StdDev |     Error |   Gen 0 |  Gen 1 |  Gen 2 | Allocated |
|--------------- |------------------------------ |-------- |---------:|----------:|----------:|--------:|-------:|-------:|----------:|
|       Belgrade |                 ExecuteReader |    Post | 119.0 us |  22.26 us |  37.41 us |  2.6250 | 1.0000 |      - |  13.53 KB |
|     Hand Coded |                     DataTable | dynamic | 123.9 us |   2.95 us |   5.64 us |  3.0000 |      - |      - |   9.37 KB |
|     Hand Coded |                    SqlCommand |    Post | 124.8 us |  16.91 us |  32.33 us |  1.2500 | 0.5000 |      - |   7.42 KB |
|     SqlMarshal |                    SqlCommand |    Post | 132.8 us |   2.77 us |   4.66 us |  2.0000 | 0.7500 |      - |  11.27 KB |
|         Dapper |  QueryFirstOrDefault<dynamic> | dynamic | 135.0 us |   3.64 us |   6.96 us |  3.5000 |      - |      - |  11.39 KB |
|     LINQ to DB |                      Query<T> |    Post | 135.9 us |   3.52 us |   5.92 us |  1.7500 | 0.7500 |      - |  10.64 KB |
|     LINQ to DB |            'First (Compiled)' |    Post | 136.5 us |   2.99 us |   5.72 us |  1.7500 | 0.7500 |      - |  11.23 KB |
|       PetaPoco |             'Fetch<T> (Fast)' |    Post | 136.8 us |   4.67 us |   7.85 us |  2.0000 | 1.0000 |      - |  11.52 KB |
|         Dapper |   'Query<dynamic> (buffered)' | dynamic | 137.6 us |   6.44 us |  12.31 us |  2.0000 | 1.0000 |      - |  11.72 KB |
|         Mighty |                Query<dynamic> | dynamic | 141.7 us |   4.99 us |   9.54 us |  2.0000 | 1.0000 |      - |  12.43 KB |
|        Massive |             'Query (dynamic)' | dynamic | 142.1 us |   1.59 us |   2.66 us |  2.0000 | 1.0000 |      - |  12.07 KB |
|         Dapper |         'Query<T> (buffered)' |    Post | 143.0 us |   7.98 us |  13.41 us |  2.0000 | 1.0000 |      - |  11.64 KB |
|         Mighty |      SingleFromQuery<dynamic> | dynamic | 144.8 us |   3.95 us |   6.64 us |  2.5000 | 1.0000 |      - |  12.43 KB |
|         Dapper |        QueryFirstOrDefault<T> |    Post | 147.0 us |  22.39 us |  42.80 us |  1.7500 | 0.7500 |      - |  11.35 KB |
|       PetaPoco |                      Fetch<T> |    Post | 149.2 us |  22.91 us |  43.80 us |  2.5000 | 1.0000 | 0.2500 |   12.2 KB |
|         Dapper |              'Contrib Get<T>' |    Post | 149.9 us |  13.30 us |  25.42 us |  2.0000 | 1.0000 |      - |  12.28 KB |
|   ServiceStack |                 SingleById<T> |    Post | 151.8 us |   3.95 us |   7.56 us |  2.7500 | 1.0000 | 0.2500 |  15.27 KB |
|         Mighty |            SingleFromQuery<T> |    Post | 152.5 us |  14.77 us |  24.83 us |  2.0000 | 1.0000 |      - |  12.53 KB |
|         Mighty |                      Query<T> |    Post | 162.7 us |  45.49 us |  76.44 us |  2.0000 | 1.0000 |      - |  12.53 KB |
|         Dapper |       'Query<T> (unbuffered)' |    Post | 191.4 us |   6.95 us |  11.67 us |  2.2500 | 1.0000 | 0.2500 |  11.76 KB |
|     LINQ to DB |                         First |    Post | 200.6 us |  24.67 us |  47.18 us |  2.7500 | 1.0000 | 0.2500 |  15.79 KB |
| DevExpress.XPO |             GetObjectByKey<T> |    Post | 204.8 us |   5.69 us |  10.89 us |  5.5000 | 1.5000 |      - |  29.16 KB |
|        EF Core |            'First (Compiled)' |    Post | 212.4 us |  15.70 us |  30.01 us |  2.5000 |      - |      - |   8.39 KB |
|           EF 6 |                      SqlQuery |    Post | 251.1 us |  92.97 us | 140.55 us |  3.7500 | 1.0000 |      - |  23.67 KB |
|         Dapper | 'Query<dynamic> (unbuffered)' | dynamic | 255.9 us |  99.08 us | 149.80 us |  2.5000 | 1.0000 | 0.2500 |   11.8 KB |
| DevExpress.XPO |                      Query<T> |    Post | 285.4 us |  92.67 us | 140.10 us | 10.2500 |      - |      - |  31.71 KB |
|     NHibernate |                           HQL |    Post | 289.8 us |  18.26 us |  34.92 us |  5.5000 | 1.0000 |      - |  31.32 KB |
|     NHibernate |                        Get<T> |    Post | 302.1 us |  16.69 us |  28.05 us |  5.5000 | 1.0000 |      - |  29.37 KB |
|        EF Core |         'First (No Tracking)' |    Post | 334.9 us |  50.05 us |  84.11 us |  3.5000 | 0.5000 |      - |  19.53 KB |
|           EF 6 |                         First |    Post | 339.4 us |  43.67 us |  66.03 us | 14.0000 |      - |      - |  44.18 KB |
|        EF Core |                      SqlQuery |    Post | 344.0 us |  55.47 us |  83.86 us |  5.5000 |      - |      - |  17.59 KB |
|        EF Core |                         First |    Post | 357.5 us |  51.72 us |  78.20 us |  4.0000 |      - |      - |   12.3 KB |
|     NHibernate |                      Criteria |    Post | 357.6 us |  37.63 us |  63.23 us | 11.5000 | 1.0000 |      - |   56.5 KB |
|           EF 6 |         'First (No Tracking)' |    Post | 383.1 us |  33.98 us |  57.10 us |  9.0000 | 1.0000 |      - |  50.95 KB |
|     NHibernate |                           SQL |    Post | 399.2 us |  40.65 us |  68.31 us | 19.0000 | 1.0000 |      - |   78.9 KB |
| DevExpress.XPO |                 FindObject<T> |    Post | 602.5 us | 361.92 us | 547.18 us |  8.0000 |      - |      - |   27.2 KB |
|     NHibernate |                          LINQ |    Post | 925.9 us |  47.62 us |  80.02 us | 12.0000 | 2.0000 |      - |  53.59 KB |
```
2021-04-07 10:32:33 +06:00
Andrii Kurdiumov 252e8e0742 As far as I aware, Soma related code no longer in this project.
And thus can be removed
2021-04-01 08:40:59 +06:00
Vedran Bilopavlović cabdf4fc62 Add conditions for Norm tests in Perfomance project 2021-02-22 12:43:38 +01:00
Steve Desmond f6825237f5 Add basic RepoDb benchmark 2021-02-17 14:32:50 -05:00
Vedran Bilopavlović 8876c3f690 Add Norm benchmarks tests 2020-12-29 11:58:43 +01:00
Marc Gravell 6ab170c160 .Net 5 (#1572)
* initial net5.0 tweaks; also fix current IDE warnings

* lib updates and fixes

* more cleanup

* fix snafu

* skip locals init

* disable xunit shadow copy in tests

* test records

* explore scenario that currently works re #1571
2020-11-17 09:57:17 +00:00
Nick Craver 78ed4b2077 Tests: move into folders
One of several moves to make this something we can dev on all platforms and build on Actions for v3 onwards.
2020-10-11 14:56:35 -04:00