Skip to content

With a little change the reader will load data with GetValues(myValues) 30% faster [DNET1038] #949

@firebird-automations

Description

@firebird-automations

Submitted by: Baldur Fürchau (bfuerchau)

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 and 30% than current version.

An additional reason to use Firebird.

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions