/
dev-npgsql
/
npgsql
Обзор
Документация
Войти
/
dev-npgsql
/
npgsql
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
v10.0.2
test/Npgsql.Benchmarks/ReadColumns.cs
72 строки
2 KB
Shay Rojansky
Use file-scoped namespaces (#4225)
18 дек 2021, 13:52
Не верифицирован
18 дек 2021, 13:52
43756d1
Код
Авторство
О чём код?
using System.Linq; using System.Reflection; using System.Text; using BenchmarkDotNet.Attributes; namespace Npgsql.Benchmarks; public class ReadColumns { NpgsqlConnection _conn = default!; NpgsqlCommand _cmd = default!; [Params(1, 10, 100, 1000)] public int NumColumns { get; set; } = 100; static readonly string[] Queries; [GlobalSetup] public void GlobalSetup() { _conn = BenchmarkEnvironment.OpenConnection(); _cmd = new NpgsqlCommand(Queries[NumColumns], _conn); } [GlobalCleanup] public void Cleanup() { _cmd.Dispose(); _conn.Dispose(); } [Benchmark] public int IntColumn() { unchecked { var x = 0; using (var reader = _cmd.ExecuteReader()) { reader.Read(); for (var i = 0; i < NumColumns; i++) x += reader.GetInt32(i); } return x; } } static ReadColumns() { Queries = new string[NumColumnsValues.Max() + 1]; Queries[0] = "SELECT 1 WHERE 1=0"; foreach (var numColumns in NumColumnsValues.Where(i => i != 0)) Queries[numColumns] = GenerateQuery(numColumns); } static string GenerateQuery(int numColumns) { var sb = new StringBuilder() .Append("SELECT ") .Append(string.Join(",", Enumerable.Range(0, numColumns))) .Append(";"); return sb.ToString(); } static readonly int[] NumColumnsValues = typeof(ReadColumns) .GetProperty(nameof(NumColumns))! .GetCustomAttribute<ParamsAttribute>()! .Values .Cast<int>() .ToArray(); }