I apologize for the long email, but this is a poll of sorts.
I tried to do quite a bit of work to polish some of the GUI updates and
underlying code for the 10.6 release while adding some features that have been
requested. One area that I wasn’t able to spend as much time on until now
is the overall performance and resource usage of the Editor in particular when
many tabs are opened. The Editor is a pig with respect to the amount of
underlying components created. More and more is always asked of it, other teams
at Quest interact with Toad and want integration points, users request features
that exist in Visual Studio and Eclipse, etc. There is only so much more than
can be squeezed into it before something drastic has to change.
Several years ago when we went to a unified Editor there was much discussion
regarding keeping SQL and PL/SQL workflow separated. Users were familiar with
the SQL Editor and Procedure Editor as separate entities and much of that
familiarity has been forced onto the current Editor. In particular I am
referring to the various tab styles and desktops. The current method, used in
all versions since the unified Editor was introduced, is to have each tab
maintain its own desktop layout. This means that every docked panel that you see
is duplicated across each Editor tab. Some docked panels need to be synched
across all editor tabs, others do not. This requires much work internally to
keep tabs synched correctly and the resource usage is almost out of hand when
working with many tabs.
A method that I’ve been playing with over the past week or so is to have a
single desktop layout. All docked panels are created once for an Editor instance
and all Editor tabs share that space. This is far more efficient. Memory usage
when 50+ tabs are opened is low. Creating new tabs and loading files/objects is
speedy. It’s much easier to handle the few docked panels that should not
by synched across all tabs than it is to handle the synching currently used.
From a design perspective this makes much more sense and the performance is
incomparable between my test build and the GA/beta builds. If you are still
reading, you’ll be saddened to hear that there is a catch. If we are to
remain in this SQL vs. PL/SQL mindset then switching the active Editor tab is
slow. In this model the desktop layout needs to be discarded and reloaded on
each tab change. We aren’t talking significant delays, but easily a full
second or two which feels sluggish and unacceptable to me at least. My limited
experience with other IDEs tells me that Toad is not following the crowd in this
area. Delphi gives you one desktop layout. You can create more and change them
at will, but that change applies to every file opened without exception. If Toad
can evolve to follow this common design then the Editor can be remarkably fast
and efficient for the release after 10.6.
So, what are your thoughts? What is most important to you? I see 3 options.
High resource usage is OK as long as tab navigation is fairly quick. Working with many tabs may use more memory and GDI resources that my machine can provide. High resource usage is unacceptable, but SQL and PL/SQL tabs/desktops are very important to me and the tab change delay is OK. High resource usage and tab change delays are both unacceptable and to gain the maximum speed with the least amount of resource usage I’m willing to go to a single desktop layout that affects all Editor tabs.
I have not yet explored other docking components to compare layout changing
speed which is another possibility, but the current component set provides
pinning and more complicated dock layouts so a new component set would need to
provide the same. I haven’t seen anything yet that comes close to
providing what ours currently does.