Created
May 10, 2021 15:05
-
-
Save Drawaes/27311bcee54e3ef524823f1c9bed7179 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
namespace TestApp | |
{ | |
class Program | |
{ | |
private static ConnectionDetails _connectionDetails; | |
static async Task Main(string[] args) | |
{ | |
_connectionDetails = new ConnectionDetails() | |
{ | |
Server = "127.0.0.1", | |
Database = "bench", | |
Password = "testpassword", | |
Username = "sa" | |
}; | |
await PipeClient(); | |
Console.ReadLine(); | |
} | |
static async Task PipeClient() | |
{ | |
for (var x = 0; x < 3; x++) | |
{ | |
var connection = await System.IO.Pipelines.Networking.Sockets.SocketConnection.ConnectAsync(new IPEndPoint(IPAddress.Loopback, 1433)); | |
var sqlConnection = new SqlPipe(connection, _connectionDetails); | |
await sqlConnection.ConnectAsync(); | |
var sw = Stopwatch.StartNew(); | |
// Now we have logged in, lets try a simple query | |
var reader = await sqlConnection.ExecuteQueryAsync("SELECT * FROM [Values]"); | |
await reader.ReadMetaDataAsync(); | |
// meta data should be loaded now | |
var i = 0; | |
while (await reader.ReadRowAsync()) | |
{ | |
ReadRow(reader); | |
i++; | |
} | |
var time = sw.ElapsedMilliseconds; | |
Console.WriteLine($"{i} Total rows read time elapsed {time}"); | |
} | |
} | |
static void ReadRow(DataReader dr) | |
{ | |
var rowReader = dr.GetRowReader(); | |
rowReader.ReadInt(); | |
var isNull = rowReader.ReadVarCharNullable(out var value); | |
rowReader.ReadDateTime(); | |
} | |
static async Task SqlClient() | |
{ | |
for (var x = 0; x < 3; x++) | |
{ | |
using (var connection = new SqlConnection($"Server={_connectionDetails.Server};Database={_connectionDetails.Database};User Id={_connectionDetails.Username};Password = {_connectionDetails.Password}")) | |
{ | |
await connection.OpenAsync(); | |
var command = new SqlCommand("SELECT * FROM [Values]", connection); | |
var sw = Stopwatch.StartNew(); | |
var reader = await command.ExecuteReaderAsync(); | |
var i = 0; | |
while (await reader.ReadAsync()) | |
{ | |
reader.GetInt32(0); | |
reader.GetString(1); | |
reader.GetDateTime(2); | |
i++; | |
} | |
var time = sw.ElapsedMilliseconds; | |
reader.Dispose(); | |
command.Dispose(); | |
Console.WriteLine($"{i} Total rows read time elapsed {time}"); | |
} | |
} | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment