Hello Jiri et al, I am working on a large project which we migrated from .NET 2 to .NET 4 a few weeks ago. Up to this morning, I was still linking against the 2.5.0 build of FirebirdSql.Data.FirebirdClient (built for .NET 2.0).
After updating to 2.5.2, compiled on VS 2010 for .NET 4.0, I ran our performance tests again and found a slight degradation of the overall execution time (about 3%-4%). I decided to compare profiling reports done with 2.5.0 and 2.5.2 and ran across something I don't understand: - With 2.5.0, I see that 33% of the (inclusive) time is spent in the DbDataAdapter.Fill method (the app is very data centric, so this is what I expect); that is 45 samples. - With 2.5.2, I see that 18% of the (inclusive) time is spend in the same Fill method; that is 59 samples. Hey, what is going on here ? I spend more time in the DbDataAdapter, and the % goes down ? First hypothesis: there must be some multi-threading involved here. What makes all my alarm bells ring is the following observation: - FbCommand.Dispose ................ 173 inclusive samples - Version10.GdsStatement.Dispose ... 168 inclusive samples - Version11.GdsStatement.Dispose ... 168 inclusive samples - System.Threading.Monitor.Enter ... 137 inclusive samples These methods were absent from the 2.5.0 performance samplings, so I suspect I missed some heavy architectural refactoring between 2.5.0 and 2.5.2. Can somebody confirm this? Or do I completely miss the point? Seeing that my application is now spending more than 50% of its time in FbCommand.Dispose makes me feel queasy, not to mention the 42% in the lock() calls... I hope somebody can shed some light into this. Thanks. Pierre ------------------------------------------------------------------------------ _______________________________________________ Firebird-net-provider mailing list Firebird-net-provider@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/firebird-net-provider