Skip to content

Commit bba991e

Browse files
committed
feat: migrate to System.IO.Pipelines, remove DotNetty, and bump version to 1.8.0
- Fully migrated MSSQL, MySQL, and Postgres providers to Pipelines. - Implemented native, cross-platform NTLMv2 and MD5 authentication. - Optimized protocol parsing with zero-allocation SequenceReader. - Added shared Cosmo.Transport.Pipelines library with netstandard2.0 polyfills. - Updated benchmarks and verified performance parity with official drivers.
1 parent ac66774 commit bba991e

29 files changed

Lines changed: 1258 additions & 4463 deletions
Lines changed: 33 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
```
22
3-
BenchmarkDotNet v0.15.8, macOS Tahoe 26.3 (25D125) [Darwin 25.3.0]
3+
BenchmarkDotNet v0.15.8, macOS Tahoe 26.3.1 (25D2128) [Darwin 25.3.0]
44
Apple M1, 1 CPU, 8 logical and 8 physical cores
55
.NET SDK 10.0.101
66
[Host] : .NET 10.0.1 (10.0.1, 10.0.125.57005), Arm64 RyuJIT armv8.0-a
@@ -9,16 +9,35 @@ Apple M1, 1 CPU, 8 logical and 8 physical cores
99
IterationCount=10 LaunchCount=1 WarmupCount=3
1010
1111
```
12-
| Method | Mean | Error | StdDev | Gen0 | Gen1 | Allocated |
13-
|------------------------------------------------------ |------------:|----------:|----------:|--------:|-------:|----------:|
14-
| 'CosmoSQL Cold connect+query+close (no pool)' | 13,559.5 μs | 313.16 μs | 186.36 μs | 15.6250 | - | 96 KB |
15-
| 'ADO.NET Cold connect+query+close (built-in pool)' | 711.7 μs | 29.57 μs | 17.60 μs | 1.9531 | - | 17.07 KB |
16-
| 'CosmoSQL Pool acquire+query+release' | 678.1 μs | 17.53 μs | 11.59 μs | 9.7656 | 0.9766 | 59.6 KB |
17-
| 'CosmoSQL Warm query only (full table)' | 679.2 μs | 17.35 μs | 11.48 μs | 9.7656 | 0.9766 | 59.64 KB |
18-
| 'ADO.NET Warm query only (full table)' | 686.2 μs | 17.99 μs | 10.70 μs | 1.9531 | - | 15.96 KB |
19-
| 'CosmoSQL Warm single-row query' | 552.2 μs | 11.06 μs | 7.31 μs | 0.9766 | - | 7.79 KB |
20-
| 'ADO.NET Warm single-row query' | 554.8 μs | 10.77 μs | 7.12 μs | 0.9766 | - | 8.9 KB |
21-
| 'CosmoSQL Warm query + ToList<Account>' | 679.6 μs | 16.80 μs | 11.11 μs | 9.7656 | 0.9766 | 61.86 KB |
22-
| 'ADO.NET Warm query + manual map List<Account>' | 681.9 μs | 14.31 μs | 9.47 μs | 2.9297 | - | 19.54 KB |
23-
| 'CosmoSQL Warm query + ToJson()' | 759.5 μs | 33.96 μs | 17.76 μs | 37.1094 | 7.8125 | 227.6 KB |
24-
| 'ADO.NET Warm query + JSON via DataTable' | 1,034.1 μs | 211.57 μs | 139.94 μs | 31.2500 | 7.8125 | 213.78 KB |
12+
| Method | Mean | Error |
13+
|------------------------------------------------------- |-----:|------:|
14+
| 'CosmoSQL Cold connect+query+close (no pool)' | NA | NA |
15+
| 'ADO.NET Cold connect+query+close (built-in pool)' | NA | NA |
16+
| 'CosmoSQL Pool acquire+query+release' | NA | NA |
17+
| 'CosmoSQL Warm query only (full table)' | NA | NA |
18+
| 'ADO.NET Warm query only (full table)' | NA | NA |
19+
| 'CosmoSQL Warm single-row query' | NA | NA |
20+
| 'ADO.NET Warm single-row query' | NA | NA |
21+
| 'CosmoSQL Warm query + ToList<T>' | NA | NA |
22+
| 'ADO.NET Warm query + manual map rows' | NA | NA |
23+
| 'CosmoSQL Warm query + ToJson()' | NA | NA |
24+
| 'ADO.NET Warm query + JSON via DataTable' | NA | NA |
25+
| 'CosmoSQL Warm FOR JSON streamed (object-by-object)' | NA | NA |
26+
| 'CosmoSQL Warm FOR JSON buffered (full array)' | NA | NA |
27+
| 'ADO.NET Warm FOR JSON buffered (full array)' | NA | NA |
28+
29+
Benchmarks with issues:
30+
MsSqlBenchmarks.'CosmoSQL Cold connect+query+close (no pool)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
31+
MsSqlBenchmarks.'ADO.NET Cold connect+query+close (built-in pool)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
32+
MsSqlBenchmarks.'CosmoSQL Pool acquire+query+release': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
33+
MsSqlBenchmarks.'CosmoSQL Warm query only (full table)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
34+
MsSqlBenchmarks.'ADO.NET Warm query only (full table)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
35+
MsSqlBenchmarks.'CosmoSQL Warm single-row query': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
36+
MsSqlBenchmarks.'ADO.NET Warm single-row query': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
37+
MsSqlBenchmarks.'CosmoSQL Warm query + ToList<T>': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
38+
MsSqlBenchmarks.'ADO.NET Warm query + manual map rows': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
39+
MsSqlBenchmarks.'CosmoSQL Warm query + ToJson()': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
40+
MsSqlBenchmarks.'ADO.NET Warm query + JSON via DataTable': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
41+
MsSqlBenchmarks.'CosmoSQL Warm FOR JSON streamed (object-by-object)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
42+
MsSqlBenchmarks.'CosmoSQL Warm FOR JSON buffered (full array)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
43+
MsSqlBenchmarks.'ADO.NET Warm FOR JSON buffered (full array)': Job-UWLSOM(IterationCount=10, LaunchCount=1, WarmupCount=3)
Lines changed: 15 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,15 @@
1-
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error,StdDev,Gen0,Gen1,Allocated
2-
'CosmoSQL Cold connect+query+close (no pool)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,"13,559.5 μs",313.16 μs,186.36 μs,15.6250,0.0000,96 KB
3-
'ADO.NET Cold connect+query+close (built-in pool)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,711.7 μs,29.57 μs,17.60 μs,1.9531,0.0000,17.07 KB
4-
'CosmoSQL Pool acquire+query+release',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,678.1 μs,17.53 μs,11.59 μs,9.7656,0.9766,59.6 KB
5-
'CosmoSQL Warm query only (full table)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,679.2 μs,17.35 μs,11.48 μs,9.7656,0.9766,59.64 KB
6-
'ADO.NET Warm query only (full table)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,686.2 μs,17.99 μs,10.70 μs,1.9531,0.0000,15.96 KB
7-
'CosmoSQL Warm single-row query',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,552.2 μs,11.06 μs,7.31 μs,0.9766,0.0000,7.79 KB
8-
'ADO.NET Warm single-row query',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,554.8 μs,10.77 μs,7.12 μs,0.9766,0.0000,8.9 KB
9-
'CosmoSQL Warm query + ToList<Account>',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,679.6 μs,16.80 μs,11.11 μs,9.7656,0.9766,61.86 KB
10-
'ADO.NET Warm query + manual map List<Account>',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,681.9 μs,14.31 μs,9.47 μs,2.9297,0.0000,19.54 KB
11-
'CosmoSQL Warm query + ToJson()',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,759.5 μs,33.96 μs,17.76 μs,37.1094,7.8125,227.6 KB
12-
'ADO.NET Warm query + JSON via DataTable',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,"1,034.1 μs",211.57 μs,139.94 μs,31.2500,7.8125,213.78 KB
1+
Method,Job,AnalyzeLaunchVariance,EvaluateOverhead,MaxAbsoluteError,MaxRelativeError,MinInvokeCount,MinIterationTime,OutlierMode,Affinity,EnvironmentVariables,Jit,LargeAddressAware,Platform,PowerPlanMode,Runtime,AllowVeryLargeObjects,Concurrent,CpuGroups,Force,HeapAffinitizeMask,HeapCount,NoAffinitize,RetainVm,Server,Arguments,BuildConfiguration,Clock,EngineFactory,NuGetReferences,Toolchain,IsMutator,InvocationCount,IterationCount,IterationTime,LaunchCount,MaxIterationCount,MaxWarmupIterationCount,MemoryRandomization,MinIterationCount,MinWarmupIterationCount,RunStrategy,UnrollFactor,WarmupCount,Mean,Error
2+
'CosmoSQL Cold connect+query+close (no pool)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
3+
'ADO.NET Cold connect+query+close (built-in pool)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
4+
'CosmoSQL Pool acquire+query+release',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
5+
'CosmoSQL Warm query only (full table)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
6+
'ADO.NET Warm query only (full table)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
7+
'CosmoSQL Warm single-row query',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
8+
'ADO.NET Warm single-row query',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
9+
'CosmoSQL Warm query + ToList<T>',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
10+
'ADO.NET Warm query + manual map rows',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
11+
'CosmoSQL Warm query + ToJson()',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
12+
'ADO.NET Warm query + JSON via DataTable',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
13+
'CosmoSQL Warm FOR JSON streamed (object-by-object)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
14+
'CosmoSQL Warm FOR JSON buffered (full array)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA
15+
'ADO.NET Warm FOR JSON buffered (full array)',Job-UWLSOM,False,Default,Default,Default,Default,Default,Default,00000000,Empty,RyuJit,Default,Arm64,8c5e7fda-e8bf-4a96-9a85-a6e23a8c635c,.NET 10.0,False,True,False,True,Default,Default,False,False,False,Default,Default,Default,Default,Default,Default,Default,Default,10,Default,1,Default,Default,Default,Default,Default,Default,16,3,NA,NA

0 commit comments

Comments
 (0)