tabs ↹ over ␣ ␣ ␣ spaces

by Jiří {x2} Činčura

ADO.NET provider 6.4.0.0 for Firebird is ready

2 Nov 2018 1 mins .NET, C#, Databases in general, Entity Framework, Entity Framework Core, Entity SQL, Firebird, LINQ, SQL, Visual Studio

New version 6.4.0.0 of ADO.NET provider for Firebird is ready for download. Among regular bug fixes and improvements I’d like to talk about one performance improvement done in this version.

When the providers talks to the server there’s a lot of numbers read. And all these numbers are coming as 4 bytes (for 32-bit integers), hence 4 bytes buffer is needed. But it would make sense to reuse it, right? And that’s exactly what has been done. The buffer is kept in memory and being reused for Int32s and Int64s. To measure the impact I did fairly synthetic test of fetching 200k rows with just one number column and the Gen0 allocations went down from 41000 to 22500 and allocated memory from ~124MB to ~68MB. I think that’s worth having 8 bytes “dangling” in the memory. 😎

Overview of all the changes can be found in tracker.

You can get the bits from NuGet FirebirdSql.Data.FirebirdClient, EntityFramework.Firebird and FirebirdSql.EntityFrameworkCore.Firebird (or from firebirdsql.org).

Profile Picture Jiří Činčura is .NET, C# and Firebird expert. He focuses on data and business layers, language constructs, parallelism, databases and performance. For almost two decades he contributes to open-source, i.e. FirebirdClient. He works as a senior software engineer for Microsoft. Frequent speaker and blogger at www.tabsoverspaces.com.