Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Performance optimization for FbCommand.LogCommand [DNET622] #583

Closed
firebird-automations opened this issue Aug 12, 2015 · 6 comments
Closed

Comments

@firebird-automations
Copy link

Submitted by: Alexander Muylaert-Gelein (gonline)

Is related to DNET467

Attachments:
Start.png
FirstOptimization.png
SecondOptimization.png
code.txt

Hi

I noticed that the emitting of the trace code is relatively slow. It takes a few percentages (6%) of the total duration of a restore script. Including Localhost traffic to the database.
First I disabled all the listeners inside the app config. This brought it down to 0.7% of the total time needed to rescript the db.
I propose one additional minor tweak to prevent formatting the message at all. That brings the required processing time down to 0.088%.

Commits: b046b47

@firebird-automations
Copy link
Author

Modified by: Alexander Muylaert-Gelein (gonline)

Attachment: Start.png [ 12793 ]

Attachment: FirstOptimization.png [ 12794 ]

Attachment: SecondOptimization.png [ 12795 ]

@firebird-automations
Copy link
Author

Modified by: Alexander Muylaert-Gelein (gonline)

Attachment: code.txt [ 12796 ]

@firebird-automations
Copy link
Author

Commented by: @cincuranet

What an improvement! :) Anyway, it's there.

@firebird-automations
Copy link
Author

Modified by: @cincuranet

status: Open [ 1 ] => Resolved [ 5 ]

resolution: Fixed [ 1 ]

Fix Version: vNext [ 10705 ]

@firebird-automations
Copy link
Author

Commented by: Baldur Fürchau (bfuerchau)

Hello,

i must say that the tracecode is absolutly slow!
In the original sourcecode (4.7.0.0) is have added a static property for DebugTrace on/off.
The Command-Object itselfs check this property before issueing the traceoutput.
Now i have checked the improvement (i run the compiled build not in the die so i have no tracelistener).
In my solution i Need to copy a complete table from one database to another.
If you have more fields to insert the Performance slows down dramaticalliy, for example:

Table with 100 Columns:
with Trace on 2694 Inserts per second.
with Trace off 4459 Inserts per second.

To configure the trace only in the application manifest is not a solution.
The improvement is roundabout 70% !!!!!

I don't want to make my own release-build if it is also simple to make a configurable property or method.

Tested on Notebook I7-64 Bit Windows 8.1, 2,2 Ghz.

@firebird-automations
Copy link
Author

Modified by: @cincuranet

Link: This issue is related to DNET467 [ DNET467 ]

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants