I have an interesting problem with a VirtualTreeView component compiled in RELEASE mode with Delphi 10.1 Berlin - it takes over 28 seconds to fill in about 40,000 rows (with VST.AddChild (nil), yes I know, not the fastest way to do it). Now, after compiling the exact same project with Delphi XE7 the executable fills the rows of the VST so fast it's basically an instant effect.

I have an interesting problem with a VirtualTreeView component compiled in RELEASE mode with Delphi 10.1 Berlin - it takes over 28 seconds to fill in about 40,000 rows (with VST.AddChild (nil), yes I know, not the fastest way to do it). Now, after compiling the exact same project with Delphi XE7 the executable fills the rows of the VST so fast it's basically an instant effect. 

The code is exactly the same, both times pulled form the SCM. I reduced the problematic loop down to a FOR loop in Delphi 10.1 only doing an .AddChild and nothing else (no data assignment etc), and that alone takes almost all of the 28 seconds itself. Funny enough a similar loop for a another VST works just fine in 10.1 just like it does in XE7. I have no clue what the problem is...

Has anyone else seen this? Looks to me like I'll have to keep compiling my release version with XE7...

Comments

  1. could there be differences in the default compiler settings. just guessing.

    ReplyDelete
  2. Create 2 new bare bone applications with your VST code adding the nodes.  Only difference one compiled in XE7 the other in Berlin.  See if any speed diff.  If different speed then difference in VST caused by different versions. If same you know it's not a memory manager or compiler problem with default settings.  Start adding more and more functionality that matches production code...see if anything slows down the Berlin tree.  Right now there's to much divergence between your trees to find out where the problem is, time to figure out where the problem lies.

    ReplyDelete

Post a Comment