مكتبة .NET Core بسيطة للغاية يمكن أن تساعد في مزامنة عدد كبير من السجلات في الذاكرة في قاعدة البيانات باستخدام فئة SQLBulkCopy .
توفر هذه المكتبة طرقًا تمديدًا بحيث يمكنك استخدامها مع entityframeworkcore dbcontext مثيل dbContexTextensions.cs أو يمكنك استخدام sqlconnectionextensions.cs للعمل مباشرة مع مثيل SQLConnection دون استخدام entityframeworkcore.
https://www.nuget.org/packages/entityframeworkcore.sqlserver.simplebulks
entityframeworkcore.sqlserver.simplebulks.demo
private const string _connectionString = "Server=.;Database=SimpleBulks;User Id=xxx;Password=xxx" ; using EntityFrameworkCore . SqlServer . SimpleBulks . BulkDelete ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkInsert ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkMerge ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkUpdate ;
// Insert all columns
dbct . BulkInsert ( rows ) ;
dbct . BulkInsert ( compositeKeyRows ) ;
// Insert selected columns only
dbct . BulkInsert ( rows ,
row => new { row . Column1 , row . Column2 , row . Column3 } ) ;
dbct . BulkInsert ( compositeKeyRows ,
row => new { row . Id1 , row . Id2 , row . Column1 , row . Column2 , row . Column3 } ) ;
dbct . BulkUpdate ( rows ,
row => new { row . Column3 , row . Column2 } ) ;
dbct . BulkUpdate ( compositeKeyRows ,
row => new { row . Column3 , row . Column2 } ) ;
dbct . BulkMerge ( rows ,
row => row . Id ,
row => new { row . Column1 , row . Column2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ) ;
dbct . BulkMerge ( compositeKeyRows ,
row => new { row . Id1 , row . Id2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ,
row => new { row . Id1 , row . Id2 , row . Column1 , row . Column2 , row . Column3 } ) ;
dbct . BulkDelete ( rows ) ;
dbct . BulkDelete ( compositeKeyRows ) ; using EntityFrameworkCore . SqlServer . SimpleBulks . BulkDelete ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkInsert ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkMerge ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkUpdate ;
dbct . BulkUpdate ( rows ,
[ "Column3" , "Column2" ] ) ;
dbct . BulkUpdate ( compositeKeyRows ,
[ "Column3" , "Column2" ] ) ;
dbct . BulkMerge ( rows ,
"Id" ,
[ "Column1" , "Column2" ] ,
[ "Column1" , "Column2" , "Column3" ] ) ;
dbct . BulkMerge ( compositeKeyRows ,
[ "Id1" , "Id2" ] ,
[ "Column1" , "Column2" , "Column3" ] ,
[ "Id1" , "Id2" , "Column1" , "Column2" , "Column3" ] ) ; new BulkInsertBuilder < Row > ( dbct . GetSqlConnection ( ) )
. WithColumns ( row => new { row . Column1 , row . Column2 , row . Column3 } )
// or .WithColumns([ "Column1", "Column2", "Column3" ])
. WithOutputId ( row => row . Id )
// or .WithOutputId("Id")
. ToTable ( dbct . GetTableName ( typeof ( Row ) ) )
// or .ToTable("Rows")
. Execute ( rows ) ; using EntityFrameworkCore . SqlServer . SimpleBulks . BulkDelete ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkInsert ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkMerge ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkUpdate ;
// Register Type - Table Name globaly
TableMapper . Register ( typeof ( Row ) , "Rows" ) ;
TableMapper . Register ( typeof ( CompositeKeyRow ) , "CompositeKeyRows" ) ;
connection . BulkInsert ( rows ,
row => new { row . Column1 , row . Column2 , row . Column3 } ) ;
connection . BulkInsert ( compositeKeyRows ,
row => new { row . Id1 , row . Id2 , row . Column1 , row . Column2 , row . Column3 } ) ;
connection . BulkUpdate ( rows ,
row => row . Id ,
row => new { row . Column3 , row . Column2 } ) ;
connection . BulkUpdate ( compositeKeyRows ,
row => new { row . Id1 , row . Id2 } ,
row => new { row . Column3 , row . Column2 } ) ;
connection . BulkMerge ( rows ,
row => row . Id ,
row => new { row . Column1 , row . Column2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ) ;
connection . BulkMerge ( compositeKeyRows ,
row => new { row . Id1 , row . Id2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ,
row => new { row . Id1 , row . Id2 , row . Column1 , row . Column2 , row . Column3 } ) ;
connection . BulkDelete ( rows , row => row . Id ) ;
connection . BulkDelete ( compositeKeyRows , row => new { row . Id1 , row . Id2 } ) ; using EntityFrameworkCore . SqlServer . SimpleBulks . BulkDelete ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkInsert ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkMerge ;
using EntityFrameworkCore . SqlServer . SimpleBulks . BulkUpdate ;
connection . BulkInsert ( rows , "Rows" ,
[ "Column1" , "Column2" , "Column3" ] ) ;
connection . BulkInsert ( rows . Take ( 1000 ) , "Rows" ,
typeof ( Row ) . GetDbColumnNames ( "Id" ) ) ;
connection . BulkInsert ( compositeKeyRows , "CompositeKeyRows" ,
[ "Id1" , "Id2" , "Column1" , "Column2" , "Column3" ] ) ;
connection . BulkUpdate ( rows , "Rows" ,
"Id" ,
[ "Column3" , "Column2" ] ) ;
connection . BulkUpdate ( compositeKeyRows , "CompositeKeyRows" ,
[ "Id1" , "Id2" ] ,
[ "Column3" , "Column2" ] ) ;
connection . BulkMerge ( rows , "Rows" ,
"Id" ,
[ "Column1" , "Column2" ] ,
[ "Column1" , "Column2" , "Column3" ] ) ;
connection . BulkMerge ( compositeKeyRows , "CompositeKeyRows" ,
[ "Id1" , "Id2" ] ,
[ "Column1" , "Column2" , "Column3" ] ,
[ "Id1" , "Id2" , "Column1" , "Column2" , "Column3" ] ) ;
connection . BulkDelete ( rows , "Rows" , "Id" ) ;
connection . BulkDelete ( compositeKeyRows , "CompositeKeyRows" , [ "Id1" , "Id2" ] ) ; new BulkInsertBuilder < Row > ( connection )
. WithColumns ( row => new { row . Column1 , row . Column2 , row . Column3 } )
// or .WithColumns([ "Column1", "Column2", "Column3" ])
. WithOutputId ( row => row . Id )
// or .WithOutputId("Id")
. ToTable ( "Rows" )
. Execute ( rows ) ; _context . BulkInsert ( rows ,
row => new { row . Column1 , row . Column2 , row . Column3 } ,
options =>
{
options . KeepIdentity = false ;
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . BulkUpdate ( rows ,
row => new { row . Column3 , row . Column2 } ,
options =>
{
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . BulkDelete ( rows ,
options =>
{
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . BulkMerge ( rows ,
row => row . Id ,
row => new { row . Column1 , row . Column2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ,
options =>
{
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . WithHoldLock = false ;
options . ReturnDbGeneratedId = true ;
options . LogTo = Console . WriteLine ;
} ) ; var contactsFromDb = _context . BulkMatch ( matchedContacts ,
x => new { x . CustomerId , x . CountryIsoCode } ,
options =>
{
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; var customerTableName = _context . CreateTempTable ( customers ,
x => new
{
x . IdNumber ,
x . FirstName ,
x . LastName ,
x . CurrentCountryIsoCode
} ,
options =>
{
options . BatchSize = 0 ;
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . DirectInsert ( row ,
row => new { row . Column1 , row . Column2 , row . Column3 } ,
options =>
{
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . DirectUpdate ( row ,
row => new { row . Column3 , row . Column2 } ,
options =>
{
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; _context . DirectDelete ( row ,
options =>
{
options . Timeout = 30 ;
options . LogTo = Console . WriteLine ;
} ) ; var updateResult = dbct . BulkUpdate ( rows , row => new { row . Column3 , row . Column2 } ) ;
Console . WriteLine ( $ "Updated: { updateResult . AffectedRows } row(s)" ) ; var deleteResult = dbct . BulkDelete ( rows ) ;
Console . WriteLine ( $ "Deleted: { deleteResult . AffectedRows } row(s)" ) ; var mergeResult = dbct . BulkMerge ( rows ,
row => row . Id ,
row => new { row . Column1 , row . Column2 } ,
row => new { row . Column1 , row . Column2 , row . Column3 } ) ;
Console . WriteLine ( $ "Updated: { mergeResult . UpdatedRows } row(s)" ) ;
Console . WriteLine ( $ "Inserted: { mergeResult . InsertedRows } row(s)" ) ;
Console . WriteLine ( $ "Affected: { mergeResult . AffectedRows } row(s)" ) ; جدول واحد/src/entityframeworkcore.sqlserver.simplebulks.benchmarks
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| efcoreinsert | 100 | 45.19 مللي ثانية | نا | - | - | - | 985.52 كيلو بايت |
| bulkinsert | 100 | 32.68 مللي ثانية | نا | - | - | - | 93.78 كيلو بايت |
| efcoreinsert | 1000 | 145.41 مللي ثانية | نا | 1000.0000 | - | - | 9702.7 كيلو بايت |
| bulkinsert | 1000 | 44.94 مللي ثانية | نا | - | - | - | 573.84 كيلو بايت |
| efcoreinsert | 10000 | 788.90 مللي ثانية | نا | 14000.0000 | 5000.0000 | - | 95727.38 كيلو بايت |
| bulkinsert | 10000 | 126.36 مللي ثانية | نا | - | - | - | 5320.53 كيلو بايت |
| efcoreinsert | 100000 | 7،107.29 مللي | نا | 146000.0000 | 36000.0000 | - | 950162.56 كيلو بايت |
| bulkinsert | 100000 | 998.42 مللي ثانية | نا | 7000.0000 | 3000.0000 | 1000.0000 | 51730.81 كيلو بايت |
| efcoreinsert | 250000 | 18،542.56 مللي ثانية | نا | 365000.0000 | 87000.0000 | - | 2352262.34 كيلو بايت |
| bulkinsert | 250000 | 2،576.88 مللي ثانية | نا | 16000.0000 | 5000.0000 | 1000.0000 | 125832.63 كيلو بايت |
| efcoreinsert | 500000 | 34،957.34 مللي ثانية | نا | 730000.0000 | 170000.0000 | - | 4711772.88 كيلو بايت |
| bulkinsert | 500000 | 5553.61 مللي ثانية | نا | 30000.0000 | 9000.0000 | 1000.0000 | 252707.77 كيلو بايت |
جداول متعددة (صفوف الوالدين 1x + صفوف الطفل 5x)/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/bulkinsertmultipletables
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| efcoreinsert | 100 | 226.22 مللي ثانية | نا | 1000.0000 | - | - | 7438.51 كيلو بايت |
| bulkinsert | 100 | 48.38 مللي ثانية | نا | - | - | - | 444.18 كيلو بايت |
| efcoreinsert | 1000 | 566.95 مللي ثانية | نا | 11000.0000 | 4000.0000 | - | 73518.48 كيلو بايت |
| bulkinsert | 1000 | 125.77 مللي ثانية | نا | - | - | - | 3460.21 كيلو بايت |
| efcoreinsert | 10000 | 6،268.42 مللي ثانية | نا | 114000.0000 | 30000.0000 | - | 731076.92 كيلو بايت |
| bulkinsert | 10000 | 1،066.74 مللي ثانية | نا | 5000.0000 | 2000.0000 | 1000.0000 | 33324.16 كيلو بايت |
| efcoreinsert | 100000 | 59،389.89 مللي ثانية | نا | 1138000.0000 | 264000.0000 | - | 7282561.93 كيلو بايت |
| bulkinsert | 100000 | 9،504.12 مللي ثانية | نا | 39000.0000 | 13000.0000 | 1000.0000 | 327100.08 كيلو بايت |
/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/bulkupdatebenchmarks.cs
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| efcoreupdate | 100 | 61.65 مللي ثانية | نا | - | - | 853.66 كيلو بايت |
| bulkupdate | 100 | 27.33 مللي ثانية | نا | - | - | 63.55 كيلو بايت |
| efcoreupdate | 1000 | 143.39 مللي ثانية | نا | 1000.0000 | - | 8398.1 كيلو بايت |
| bulkupdate | 1000 | 43.95 مللي ثانية | نا | - | - | 379.25 كيلو بايت |
| efcoreupdate | 10000 | 685.97 مللي ثانية | نا | 12000.0000 | 3000.0000 | 82396.19 كيلو بايت |
| bulkupdate | 10000 | 182.54 مللي ثانية | نا | - | - | 3499.74 كيلو بايت |
| efcoreupdate | 100000 | 8،495.18 مللي ثانية | نا | 120000.0000 | 28000.0000 | 810248.07 كيلو بايت |
| bulkupdate | 100000 | 2091.42 مللي ثانية | نا | 5000.0000 | 1000.0000 | 33819.46 كيلو بايت |
| efcoreupdate | 250000 | 17،859.49 مللي ثانية | نا | 300000.0000 | 69000.0000 | 2005895.77 كيلو بايت |
| bulkupdate | 250000 | 4،290.07 مللي ثانية | نا | 13000.0000 | 7000.0000 | 84352 كيلو بايت |
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| bulkupdate | 500000 | 10.19 ق | نا | 27000.0000 | 16000.0000 | 164.63 ميغابايت |
| bulkupdate | 1000000 | 17.03 ق | نا | 54000.0000 | 37000.0000 | 329.12 ميغابايت |
/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/bulkdeleteBenchmarks.cs
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| efcoredelete | 100 | 73.25 مللي ثانية | نا | - | - | 681.09 كيلو بايت |
| bulkdelete | 100 | 29.42 مللي ثانية | نا | - | - | 43.45 كيلو بايت |
| efcoredelete | 1000 | 176.83 مللي ثانية | نا | 1000.0000 | 1000.0000 | 6745 كيلو بايت |
| bulkdelete | 1000 | 27.19 مللي ثانية | نا | - | - | 236.86 كيلو بايت |
| efcoredelete | 10000 | 1،489.03 مللي ثانية | نا | 10000.0000 | 2000.0000 | 66031.55 كيلو بايت |
| bulkdelete | 10000 | 431.74 مللي ثانية | نا | - | - | 2150.99 كيلو بايت |
| efcoredelete | 20000 | 6،084.87 مللي ثانية | نا | 20000.0000 | 7000.0000 | 132403.3 كيلو بايت |
| bulkdelete | 20000 | 276.52 مللي ثانية | نا | - | - | 4276.01 كيلو بايت |
| efcoredelete | 50000 | 39،933.60 مللي ثانية | نا | 49000.0000 | 14000.0000 | 326164.25 كيلو بايت |
| bulkdelete | 50000 | 1،477.09 مللي ثانية | نا | 1000.0000 | - | 10594.63 كيلو بايت |
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| bulkdelete | 100000 | 937.7 مللي ثانية | نا | 3000.0000 | 1000.0000 | 20.67 ميغابايت |
| bulkdelete | 250000 | 2،619.7 مللي ثانية | نا | 7000.0000 | 3000.0000 | 51.7 ميغابايت |
| bulkdelete | 500000 | 4،897.7 مللي ثانية | نا | 13000.0000 | 6000.0000 | 103.22 ميغابايت |
| bulkdelete | 1000000 | 9،466.0 مللي ثانية | نا | 26000.0000 | 12000.0000 | 206.28 ميغابايت |
/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/bulkmergebenchmarks.cs
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| efcoreupsert | 100 | 82.11 مللي ثانية | نا | - | - | - | 1840.23 كيلو بايت |
| السطوع | 100 | 34.27 مللي ثانية | نا | - | - | - | 162.96 كيلو بايت |
| efcoreupsert | 1000 | 266.86 مللي ثانية | نا | 2000.0000 | 1000.0000 | - | 17984.91 كيلو بايت |
| السطوع | 1000 | 79.45 مللي ثانية | نا | - | - | - | 1213.33 كيلو بايت |
| efcoreupsert | 10000 | 1،451.20 مللي ثانية | نا | 26000.0000 | 8000.0000 | - | 178385.15 كيلو بايت |
| السطوع | 10000 | 677.47 مللي ثانية | نا | 1000.0000 | - | - | 11679.42 كيلو بايت |
| efcoreupsert | 100000 | 13،902.06 مللي ثانية | نا | 266000.0000 | 63000.0000 | - | 1762696.52 كيلو بايت |
| السطوع | 100000 | 3،415.31 مللي ثانية | نا | 16000.0000 | 6000.0000 | 1000.0000 | 115233.2 كيلو بايت |
| efcoreupsert | 250000 | 36167.51 مللي ثانية | نا | 665000.0000 | 152000.0000 | - | 4362872.57 كيلو بايت |
| السطوع | 250000 | 7،681.71 مللي ثانية | نا | 37000.0000 | 11000.0000 | 1000.0000 | 284187.09 كيلو بايت |
/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/bulkmergereturndbgeneratedidbenchmarks.cs
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| returndbgeneratedid | 100 | 38.45 مللي ثانية | نا | - | - | - | 151.09 كيلو بايت |
| notreturndbgeneratedid | 100 | 37.75 مللي ثانية | نا | - | - | - | 116.8 كيلو بايت |
| returndbgeneratedid | 1000 | 67.42 مللي ثانية | نا | - | - | - | 1099.48 كيلو بايت |
| notreturndbgeneratedid | 1000 | 60.02 مللي ثانية | نا | - | - | - | 769.23 كيلو بايت |
| returndbgeneratedid | 10000 | 783.73 مللي ثانية | نا | 1000.0000 | - | - | 10543.62 كيلو بايت |
| notreturndbgeneratedid | 10000 | 501.07 مللي ثانية | نا | 1000.0000 | - | - | 7348.79 كيلو بايت |
| returndbgeneratedid | 100000 | 3،187.89 مللي ثانية | نا | 14000.0000 | 5000.0000 | 1000.0000 | 103878.09 كيلو بايت |
| notreturndbgeneratedid | 100000 | 2741.31 مللي ثانية | نا | 11000.0000 | 5000.0000 | 1000.0000 | 72936.01 كيلو بايت |
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| returndbgeneratedid | 250000 | 7.799 ق | نا | 32000.0000 | 8000.0000 | - | 249.8 ميغابايت |
| notreturndbgeneratedid | 250000 | 6.619 ق | نا | 24000.0000 | 7000.0000 | - | 177.7 ميغابايت |
| returndbgeneratedid | 500000 | 15.051 ق | نا | 66000.0000 | 19000.0000 | 1000.0000 | 500.64 ميغابايت |
| notreturndbgeneratedid | 500000 | 14.328 ق | نا | 47000.0000 | 14000.0000 | - | 355.19 ميغابايت |
| returndbgeneratedid | 1000000 | 32.449 ق | نا | 129000.0000 | 34000.0000 | - | 1003.67 ميغابايت |
| notreturndbgeneratedid | 1000000 | 28.253 ق | نا | 95000.0000 | 28000.0000 | - | 710.22 ميغابايت |
عمود واحد/src/entityframeworkcore.sqlserver.simplebulks.benchmarks
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| efcoreselect | 100 | 97.373 مللي ثانية | نا | - | - | - | 1008.33 كيلو بايت |
| efcoreBatchSelect | 100 | 7.166 مللي ثانية | نا | - | - | - | 94.77 كيلو بايت |
| Bulkmatch | 100 | 8.570 مللي ثانية | نا | - | - | - | 106.63 كيلو بايت |
| efcoreselect | 1000 | 720.250 مللي ثانية | نا | 1000.0000 | - | - | 9761.42 كيلو بايت |
| efcoreBatchSelect | 1000 | 6.375 مللي ثانية | نا | - | - | - | 908.18 كيلو بايت |
| Bulkmatch | 1000 | 15.445 مللي ثانية | نا | - | - | - | 820.36 كيلو بايت |
| efcoreselect | 10000 | 8،075.686 مللي ثانية | نا | 15000.0000 | 1000.0000 | - | 97115.62 كيلو بايت |
| efcoreBatchSelect | 10000 | 66.438 مللي ثانية | نا | 1000.0000 | - | - | 9092.91 كيلو بايت |
| Bulkmatch | 10000 | 69.430 مللي ثانية | نا | 1000.0000 | - | - | 8177.76 كيلو بايت |
| efcoreselect | 100000 | 81،088.718 مللي ثانية | نا | 159000.0000 | 31000.0000 | 1000.0000 | 972204.7 كيلو بايت |
| efcoreBatchSelect | 100000 | 920.412 مللي ثانية | نا | 11000.0000 | 4000.0000 | 1000.0000 | 91808.56 كيلو بايت |
| Bulkmatch | 100000 | 742.030 مللي ثانية | نا | 13000.0000 | 6000.0000 | 1000.0000 | 82419.43 كيلو بايت |
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| efcoreBatchSelect | 250000 | 2.101 ق | نا | 26000.0000 | 11000.0000 | 1000.0000 | 224.05 ميغابايت |
| Bulkmatch | 250000 | 2.067 ق | نا | 32000.0000 | 12000.0000 | 1000.0000 | 201.64 ميغابايت |
| efcoreBatchSelect | 500000 | 4.239 ق | نا | 53000.0000 | 20000.0000 | 2000.0000 | 448.85 ميغابايت |
| Bulkmatch | 500000 | 4.507 ق | نا | 62000.0000 | 24000.0000 | 1000.0000 | 404.03 ميغابايت |
| efcoreBatchSelect | 1000000 | 8.523 ق | نا | 103000.0000 | 38000.0000 | 1000.0000 | 898.44 ميغابايت |
| Bulkmatch | 1000000 | 11.585 ق | نا | 123000.0000 | 46000.0000 | 1000.0000 | 808.82 ميغابايت |
أعمدة متعددة/src/entityframeworkcore.sqlserver.simplebulks.benchmarks
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| efcoreselect | 100 | 130.11 مللي ثانية | نا | - | - | 1256.8 كيلو بايت |
| Bulkmatch | 100 | 15.46 مللي ثانية | نا | - | - | 173.56 كيلو بايت |
| efcoreselect | 1000 | 997.87 مللي ثانية | نا | 2000.0000 | - | 12373.85 كيلو بايت |
| Bulkmatch | 1000 | 43.35 مللي ثانية | نا | - | - | 1358.77 كيلو بايت |
| efcoreselect | 10000 | 9،769.96 مللي ثانية | نا | 20000.0000 | 4000.0000 | 123595.97 كيلو بايت |
| Bulkmatch | 10000 | 238.80 مللي ثانية | نا | 2000.0000 | 1000.0000 | 13768.49 كيلو بايت |
| efcoreselect | 100000 | 89،204.16 مللي ثانية | نا | 201000.0000 | 51000.0000 | 1237424.23 كيلو بايت |
| Bulkmatch | 100000 | 2،612.00 مللي ثانية | نا | 21000.0000 | 8000.0000 | 138686.52 كيلو بايت |
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | مخصص |
|---|---|---|---|---|---|---|
| Bulkmatch | 250000 | 6.709 ق | نا | 53000.0000 | 19000.0000 | 340.68 ميغابايت |
| Bulkmatch | 500000 | 12.939 ق | نا | 107000.0000 | 36000.0000 | 683.46 ميغابايت |
| Bulkmatch | 1000000 | 25.418 ق | نا | 214000.0000 | 74000.0000 | 1369.34 ميغابايت |
/src/entityframeworkcore.sqlserver.simplebulks.benchmarks/temptablebenchmarks.cs
BenchmarkDotNet =v0.13.2, OS =Windows 10 (10.0.19045.5011)
11th Gen Intel Core i7-1165G7 2.80GHz, 1 CPU, 8 logical and 4 physical cores
.NET SDK =8.0.400
[Host] : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
Job-LGAVYD : .NET 8.0.8 (8.0.824.36612), X64 RyuJIT AVX2
InvocationCount =1 IterationCount =1 UnrollFactor =1
WarmupCount =0
| طريقة | Rowscount | يقصد | خطأ | Gen0 | Gen1 | Gen2 | مخصص |
|---|---|---|---|---|---|---|---|
| الإبداع | 100 | 7.639 مللي ثانية | نا | - | - | - | 68.03 كيلو بايت |
| الإبداع | 1000 | 14.077 مللي ثانية | نا | - | - | - | 373.76 كيلو بايت |
| الإبداع | 10000 | 89.789 مللي ثانية | نا | - | - | - | 3455.46 كيلو بايت |
| الإبداع | 100000 | 574.937 مللي ثانية | نا | 4000.0000 | 1000.0000 | - | 34081.95 كيلو بايت |
| الإبداع | 250000 | 1،403.071 مللي ثانية | نا | 12000.0000 | 5000.0000 | 1000.0000 | 85229.91 كيلو بايت |
| الإبداع | 500000 | 2،838.562 مللي ثانية | نا | 22000.0000 | 8000.0000 | 1000.0000 | 170241.85 كيلو بايت |
| الإبداع | 1000000 | 6،198.206 مللي ثانية | نا | 43000.0000 | 14000.0000 | 1000.0000 | 340282.7 كيلو بايت |
entityframeworkcore.sqlserver.SimpleBulks مرخصة بموجب ترخيص معهد ماساتشوستس للتكنولوجيا.