Hello,
We're using a SQL Server connection and at some stages (esp. when the treeview is being build as it seems) the response feels slow.
For example when switching from the private vault to the all entries in online mode it takes about 5 secs to be able to continu whilst in offline mode it is "immediate".
Below are several diagnostics measurements and I'm wondering if (esp. the online ones appear to be normal).
Two of the measurements are on debug level 0 and two are on debug level 256. For the latter I saw some strange behaviour because when on debug level 256 the response off and online it the same whilst on debug level 0 they are not ...
--- online, debug level 0
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 40 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 55 ms
TreeView.LoadConnectionList : 59 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 13 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 27 ms
TreeView.LoadConnectionList : 32 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx]...
Connection cache up to date
DecryptData : 0 ms - Count : 382
DeserializeData : 164 ms - Count : 382
LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 2356 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 120 ms
PreCreateGroups : 5 ms - Count : 1
BeginUpdate : 22 ms
TreeView.LoadConnectionList : 157 ms
--- offline, debug level 0
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 3 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 59 ms
TreeView.LoadConnectionList : 63 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 25 ms
TreeView.LoadConnectionList : 31 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 20 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 98 ms
PreCreateGroups : 4 ms - Count : 1
BeginUpdate : 18 ms
TreeView.LoadConnectionList : 130 ms
--- online, debug level 256
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 48 ms
TreeView.LoadConnectionList...
Tree view is loading 6 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 6 connections>
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 20 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 53 ms
TreeView.LoadConnectionList : 87 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 16 ms
TreeView.LoadConnectionList...
Tree view is loading 6 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 6 connections>
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 19 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 50 ms
TreeView.LoadConnectionList : 81 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx]...
Connection cache up to date
DecryptData : 0 ms - Count : 382
DeserializeData : 125 ms - Count : 382
LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 1537 ms
TreeView.LoadConnectionList...
Tree view is loading 893 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 893 connections>
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 4987 ms
PreCreateGroups : 5 ms - Count : 1
BeginUpdate : 19 ms
TreeView.LoadConnectionList : 5031 ms
LoadConnectionList...
LoadConnectionList : 0 ms
--- offline, debug level 256
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 4 ms
TreeView.LoadConnectionList...
Tree view is loading 6 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 6 connections>
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 20 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 56 ms
TreeView.LoadConnectionList : 88 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
TreeView.LoadConnectionList...
Tree view is loading 6 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 6 connections>
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 21 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 38 ms
TreeView.LoadConnectionList : 71 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 11 ms
TreeView.LoadConnectionList...
Tree view is loading 893 connections
GetGroupInfos : 0 ms
BeginUpdate...
<removed info for 893 connections>
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 4933 ms
PreCreateGroups : 5 ms - Count : 1
BeginUpdate : 23 ms
TreeView.LoadConnectionList : 4979 ms
Regards,
Jan-Pieter
Jan-Pieter,
Could you try the same steps but with debug level set to 192 (Connection Cache + Offline Mode).
Debug level 256 (Load connections detail) will slow down (drastically) the loading since it logs an entry for every session (in your case almost 900). This debug flag should only be used when trying to diagnose session load issues (disappearing sessions or corrupt type session issues).
Also, when you post the log trace, please use the [ code ] [ / code ] tags, remove the spaces this will keep the formatting and help us follow the trace flow.
Sample:LoadConnections [Microsoft SQL Server/SQL Azure : Jump] - 64-bit... Connection cache up to dateLoadConnections [Microsoft SQL Server/SQL Azure : Jump] - 64-bit : 14 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate... ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 1 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 83 msTreeView.LoadConnectionList : 176 ms
Regards,
Stéfane Lavergne
Stefane,
No problem.
Herewith the same actions as before. This morning however the response seems a lot better (even for editing properties of a session) - maybe no one is changing entries at the moment :)
Online, debug level 0
<code>
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 87 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 35 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 85 ms
TreeView.LoadConnectionList : 93 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 6 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 29 ms
TreeView.LoadConnectionList : 34 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx]...
Connection cache up to date
DecryptData : 1 ms - Count : 387
DeserializeData : 182 ms - Count : 387
LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 1114 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 108 ms
PreCreateGroups : 4 ms - Count : 1
BeginUpdate : 16 ms
TreeView.LoadConnectionList : 139 ms
LoadConnectionList...
LoadConnectionList : 26 ms
</code>
Offline, debug level 0
<code>
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 3 ms
TreeView.LoadConnectionList...
GetGroupInfos : 1 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 31 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 84 ms
TreeView.LoadConnectionList : 91 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 28 ms
TreeView.LoadConnectionList : 35 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 15 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 96 ms
PreCreateGroups : 4 ms - Count : 1
BeginUpdate : 16 ms
TreeView.LoadConnectionList : 126 ms
LoadConnectionList...
LoadConnectionList : 52 ms
</code>
Online, debug level 192
<code>
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 7 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 30 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 79 ms
TreeView.LoadConnectionList : 86 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 7 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 28 ms
TreeView.LoadConnectionList : 33 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx]...
Connection cache up to date
DecryptData : 0 ms - Count : 387
DeserializeData : 138 ms - Count : 387
LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 1449 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 101 ms
PreCreateGroups : 10 ms - Count : 1
BeginUpdate : 18 ms
TreeView.LoadConnectionList : 140 ms
LoadConnectionList...
LoadConnectionList : 46 ms
</code>
Offline, debug level 192
<code>
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 24 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 77 ms
TreeView.LoadConnectionList : 81 ms
PersonalConnectionManager.Refresh...
PersonalConnectionManager.Refresh : 1 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
LoadConnectionList...
LoadConnectionList : 0 ms
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 0 ms
PreCreateGroups : 0 ms - Count : 1
BeginUpdate : 28 ms
TreeView.LoadConnectionList : 35 ms
LoadConnectionList...
LoadConnectionList : 0 ms
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...
LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 14 ms
TreeView.LoadConnectionList...
GetGroupInfos : 0 ms
BeginUpdate...
ApplyGroupCustomImages : 0 ms
LoadConnectionInTreeNode : 99 ms
PreCreateGroups : 5 ms - Count : 1
BeginUpdate : 16 ms
TreeView.LoadConnectionList : 128 ms
LoadConnectionList...
LoadConnectionList : 47 ms
</code>
Regards,
Jan-Pieter
Online, debug level 0PersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 87 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 35 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 85 msTreeView.LoadConnectionList : 93 msPersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 6 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 0 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 29 msTreeView.LoadConnectionList : 34 msLoadConnectionList...LoadConnectionList : 0 msLoadConnections [Microsoft SQL Server/SQL Azure : xxx]... Connection cache up to date DecryptData : 1 ms - Count : 387 DeserializeData : 182 ms - Count : 387LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 1114 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate... ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 108 ms PreCreateGroups : 4 ms - Count : 1 BeginUpdate : 16 msTreeView.LoadConnectionList : 139 msLoadConnectionList...LoadConnectionList : 26 ms
Offline, debug level 0PersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 3 msTreeView.LoadConnectionList... GetGroupInfos : 1 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 31 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 84 msTreeView.LoadConnectionList : 91 msPersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 1 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 0 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 28 msTreeView.LoadConnectionList : 35 msLoadConnectionList...LoadConnectionList : 0 msLoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 15 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate... ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 96 ms PreCreateGroups : 4 ms - Count : 1 BeginUpdate : 16 msTreeView.LoadConnectionList : 126 msLoadConnectionList...LoadConnectionList : 52 ms
Online, debug level 192PersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 7 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 30 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 79 msTreeView.LoadConnectionList : 86 msPersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 7 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 0 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 28 msTreeView.LoadConnectionList : 33 msLoadConnectionList...LoadConnectionList : 0 msLoadConnections [Microsoft SQL Server/SQL Azure : xxx]... Connection cache up to date DecryptData : 0 ms - Count : 387 DeserializeData : 138 ms - Count : 387LoadConnections [Microsoft SQL Server/SQL Azure : xxx] : 1449 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate... ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 101 ms PreCreateGroups : 10 ms - Count : 1 BeginUpdate : 18 msTreeView.LoadConnectionList : 140 msLoadConnectionList...LoadConnectionList : 46 ms
Offline, debug level 192PersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 1 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 24 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 77 msTreeView.LoadConnectionList : 81 msPersonalConnectionManager.Refresh...PersonalConnectionManager.Refresh : 1 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate...LoadConnectionList...LoadConnectionList : 0 ms ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 0 ms PreCreateGroups : 0 ms - Count : 1 BeginUpdate : 28 msTreeView.LoadConnectionList : 35 msLoadConnectionList...LoadConnectionList : 0 msLoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)]...LoadConnections [Microsoft SQL Server/SQL Azure : xxx (Offline)] : 14 msTreeView.LoadConnectionList... GetGroupInfos : 0 ms BeginUpdate... ApplyGroupCustomImages : 0 ms LoadConnectionInTreeNode : 99 ms PreCreateGroups : 5 ms - Count : 1 BeginUpdate : 16 msTreeView.LoadConnectionList : 128 msLoadConnectionList...LoadConnectionList : 47 ms
Looking at your new profiler output, all looks good and fast.
Before:
OnlineTreeView.LoadConnectionList : 5031 msOfflineTreeView.LoadConnectionList : 4979 msCompared withTreeView.LoadConnectionList : 128 mswith debug level not set to 256 (Load connections detail)
As for Offline/Online performance. Offline reads/writes to a local (SQLite) file. This will always be faster than online since we execute the same exact steps plus we check the data source for any modifications (delta) and apply any such delta to the client.
As a rule of thumb, running with debug level = 0 is your best option.
Regards,
Stéfane Lavergne