Hi there,
Here I'm trying to save some miliseconds with the Firebird provider
(using embedded database!)
Well, I've a weird problem and I'd like you to take a look into it.
Well, I'm using the following code to read data from a Firebird database:
object val;
while( reader.Read() )
{
for( int j = 0; j < reader.FieldCount; ++j )
val=reader[j];
// table.Add(count, val);
++count;
}
I'm reading 416310 records.
Well, in my poor-slow laptop it takes 50 seconds to read all data.
The "funny" thing is: did you see the commented out code? Well, it just
adds the last read field from the record to a hash table. It doesn't
make any sense, it is just a test case extracted from real code, so
don't try to find any logic.
Well, the point is: if I uncomment the line -> it takes 158 seconds to
read the 416310 records!!!
Ok, now you're thinking: yes, that's because adding to the hashtable is
slow. Check the following code:
Hashtable table = new Hashtable();
int ini = Environment.TickCount;
for( int i = 0; i < 416310; ++i )
table.Add(i, new object());
Console.WriteLine(
"Time to add {0} objects = {1} ms",
table.Count,
Environment.TickCount - ini);
It takes 250 ms (miliseconds!) to add the same number of dumb objects to
the Hashtable!!
So, somehow, adding records to the Hashtable breaks reader
performance!!! I'm going crazy, and yes, I've repeated the results on a
different computer with different OS and I get the same relative results!
If you change the Hashtable by an ArrayList... performance hit goes away!!
Ideas???
Thanks
pablo
-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Firebird-net-provider mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/firebird-net-provider