Skip to content

Commit 14efdb7

Browse files
fix: convert [Param] to [Arguments] when required
1 parent d2d6dba commit 14efdb7

4 files changed

Lines changed: 24 additions & 36 deletions

File tree

benchmark/BenchmarkRunner/Benchmarks/BaseWriteBenchmark.cs

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ public abstract class BaseWriteBenchmark
55
[Params(2000000)]
66
public int TotalRecords { get; set; }
77

8-
[Params(500)]
9-
public int EFCoreBatchSize { get; set; }
10-
public abstract Task Sqlc_AddOrderItems();
11-
public abstract Task EFCore_AddOrderItems();
8+
public abstract Task Sqlc_AddOrderItems(int batchSize);
9+
public abstract Task EFCore_AddOrderItems(int batchSize);
1210
}

benchmark/BenchmarkRunner/Benchmarks/MysqlWriteBenchmark.cs

Lines changed: 8 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,25 @@ public class MysqlWriteBenchmark : BaseWriteBenchmark
2020
private readonly Queries _efCoreImpl = new(new SalesDbContext(_connectionString), useTracking: false);
2121
private List<QuerySql.AddOrderItemsArgs> _testOrderItems = null!;
2222

23-
/// <summary>
24-
/// MySQL batch size can be very large yet very performant in SQLC implementation due to
25-
/// CSV load usage, so we wish to examine exceptionally large batches.
26-
/// </summary>
27-
[Params(1000, 5000, 20000)]
28-
public int SqlcBatchSize { get; set; }
29-
3023
[BenchmarkCategory("Write")]
3124
[Benchmark(Baseline = true, Description = "SQLC - AddOrderItems")]
32-
public override async Task Sqlc_AddOrderItems()
25+
[Arguments(1000)]
26+
[Arguments(5000)]
27+
[Arguments(20000)]
28+
public override async Task Sqlc_AddOrderItems(int batchSize)
3329
{
34-
await Helpers.InsertInBatchesAsync(_testOrderItems, SqlcBatchSize, _sqlcImpl.AddOrderItemsAsync);
30+
await Helpers.InsertInBatchesAsync(_testOrderItems, batchSize, _sqlcImpl.AddOrderItemsAsync);
3531
}
3632

3733
[BenchmarkCategory("Write")]
3834
[Benchmark(Description = "EFCore - AddOrderItems")]
39-
public override async Task EFCore_AddOrderItems()
35+
[Arguments(500)]
36+
public override async Task EFCore_AddOrderItems(int batchSize)
4037
{
4138
var args = _testOrderItems.Select(i => new Queries.AddOrderItemsArgs(
4239
i.OrderId, i.ProductId, i.Quantity, i.UnitPrice
4340
)).ToList();
44-
await Helpers.InsertInBatchesAsync(args, EFCoreBatchSize, _efCoreImpl.AddOrderItems);
41+
await Helpers.InsertInBatchesAsync(args, batchSize, _efCoreImpl.AddOrderItems);
4542
}
4643

4744
public static Func<Task> GetSeedMethod()

benchmark/BenchmarkRunner/Benchmarks/PostgresqlWriteBenchmark.cs

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,27 +19,24 @@ public class PostgresqlWriteBenchmark : BaseWriteBenchmark
1919
private readonly Queries _efCoreImpl = new(new SalesDbContext(_connectionString), useTracking: false);
2020
private List<QuerySql.AddOrderItemsArgs> _testOrderItems = null!;
2121

22-
/// <summary>
23-
/// PostgreSQL batch size can be larger in SQLC implementation due to using COPY FROM syntax.
24-
/// </summary>
25-
[Params(500, 1000)]
26-
public int SqlcBatchSize { get; set; }
27-
2822
[BenchmarkCategory("Write")]
2923
[Benchmark(Baseline = true, Description = "SQLC - AddOrderItems")]
30-
public override async Task Sqlc_AddOrderItems()
24+
[Arguments(500)]
25+
[Arguments(1000)]
26+
public override async Task Sqlc_AddOrderItems(int batchSize)
3127
{
32-
await Helpers.InsertInBatchesAsync(_testOrderItems, SqlcBatchSize, _sqlcImpl.AddOrderItemsAsync);
28+
await Helpers.InsertInBatchesAsync(_testOrderItems, batchSize, _sqlcImpl.AddOrderItemsAsync);
3329
}
3430

3531
[BenchmarkCategory("Write")]
3632
[Benchmark(Description = "EFCore - AddOrderItems")]
37-
public override async Task EFCore_AddOrderItems()
33+
[Arguments(500)]
34+
public override async Task EFCore_AddOrderItems(int batchSize)
3835
{
3936
var args = _testOrderItems.Select(i => new Queries.AddOrderItemsArgs(
4037
i.OrderId, i.ProductId, i.Quantity, i.UnitPrice
4138
)).ToList();
42-
await Helpers.InsertInBatchesAsync(args, EFCoreBatchSize, _efCoreImpl.AddOrderItems);
39+
await Helpers.InsertInBatchesAsync(args, batchSize, _efCoreImpl.AddOrderItems);
4340
}
4441

4542
public static Func<Task> GetSeedMethod()

benchmark/BenchmarkRunner/Benchmarks/SqliteWriteBenchmark.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,28 +20,24 @@ public class SqliteWriteBenchmark : BaseWriteBenchmark
2020
private readonly Queries _efCoreImpl = new(new SalesDbContext(_connectionString), useTracking: false);
2121
private List<QuerySql.AddOrderItemsArgs> _testOrderItems = null!;
2222

23-
/// <summary>
24-
/// SQLite batch size for SQLC there is a limitation of 1000 bind variables in the resulting SQL.
25-
/// e.g. If we insert to a table with 10 columns, the maximum batch size is 1000 / 10 = 100.
26-
/// </summary>
27-
[Params(50, 100)]
28-
public int SqlcBatchSize { get; set; }
29-
3023
[BenchmarkCategory("Write")]
3124
[Benchmark(Baseline = true, Description = "SQLC - AddOrderItems")]
32-
public override async Task Sqlc_AddOrderItems()
25+
[Arguments(50)]
26+
[Arguments(100)]
27+
public override async Task Sqlc_AddOrderItems(int batchSize)
3328
{
34-
await Helpers.InsertInBatchesAsync(_testOrderItems, SqlcBatchSize, _sqlcImpl.AddOrderItemsAsync);
29+
await Helpers.InsertInBatchesAsync(_testOrderItems, batchSize, _sqlcImpl.AddOrderItemsAsync);
3530
}
3631

3732
[BenchmarkCategory("Write")]
3833
[Benchmark(Description = "EFCore - AddOrderItems")]
39-
public override async Task EFCore_AddOrderItems()
34+
[Arguments(500)]
35+
public override async Task EFCore_AddOrderItems(int batchSize)
4036
{
4137
var args = _testOrderItems.Select(i => new Queries.AddOrderItemsArgs(
4238
i.OrderId, i.ProductId, i.Quantity, i.UnitPrice
4339
)).ToList();
44-
await Helpers.InsertInBatchesAsync(args, EFCoreBatchSize, _efCoreImpl.AddOrderItems);
40+
await Helpers.InsertInBatchesAsync(args, batchSize, _efCoreImpl.AddOrderItems);
4541
}
4642

4743
public static Func<Task> GetSeedMethod()

0 commit comments

Comments
 (0)