With a little change the reader will load data with GetValues(myValues) 30% faster
----------------------------------------------------------------------------------
Key: DNET-1038
URL: http://tracker.firebirdsql.org/browse/DNET-1038
Project: .NET Data provider
Issue Type: Improvement
Components: ADO.NET Provider
Affects Versions: 7.10.1.0
Environment: Windows 10 20H2, Visual Studio 20H2, I7 2,6GHz, 16 GB Memory, Firebird 3.0
Reporter: Baldur Fürchau
Assignee: Jiri Cincura
I have loaded the Version 7.10.1.0 because the clr 4.8 is not available on all customers, but the improvement is also for the latest version.
In my little test i use generally the GetValues() from th FbDataReader to process all values the same time.
With the current version i get for a table with 90 columns an average of 8500 rows per second.
The Micorosft SwlDatareader give me for the same table 10000 rows per second.
So I have checked the source for the GetValue()-Method:
public override int GetValues(object[] values)
{
CheckState();
CheckPosition();
var count = Math.Min(_fields.Count, values.Length);
for (var i = 0; i < count; i++)
{
values[i] = _row[i].Value; // CheckedGetValue(x => GetValue(x), i);
}
return count;
}
Because all checks are done you can directly load the row values.
With this only little change i get now 12000 Rows per Second and this is 20% faster than SQL Server.
An additional reason to use Firebird.
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: http://tracker.firebirdsql.org/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
|