On 16/11/2015 07:11, Arno Brinkman wrote: > Hi All, > > I noticed some big differences in performance between FB3 and FB2.5, > so with help form Vlad i got debug builds to do some profiling. > Anyway i ended up to set-up a VM with firebird source-tree and needed > tools. > This has been improved compared to some years ago, so i’m happy here > to have everything quick up and running Glimlach > > > The performance problem is in class ValueListNode > > This class has and items property which is in array and gets modified > by function calls of the class. > No problem here, but ValueListNode is inherited from ExprNode and > there we have 2 arrays dsqlChildNodes and jrdChildNodes > > for every call to add() in ValueListNode the method resetChildNodes() > is called; > As resetChildNodes() rebuilds all nodes in dsqlChildNodes and > jrdChildNodes with items as base, you can understand when adding 200 > items. > 2nd item added => (clear and 4 new items), 3rd item added (clear and 6 > new items), etc... > This explodes by the more items are added.
Looking at it. > > Further i’m not sure why for every added item there are 2 copied (in > dsqlChild and jrdChild). > Is ValueListNode only used at places where dsqlChild and jrdChild also > really matters? > > dsqlChild and jrdChild are used for default processing, king of old nod_count. Most nodes has individual members for each sub-node and they are added to *Child. "items" of this class is an array, but it's added to *Child as well. Adriano ------------------------------------------------------------------------------ Presto, an open source distributed SQL query engine for big data, initially developed by Facebook, enables you to easily query your data on Hadoop in a more interactive manner. Teradata is also now providing full enterprise support for Presto. Download a free open source copy now. http://pubads.g.doubleclick.net/gampad/clk?id=250295911&iu=/4140 Firebird-Devel mailing list, web interface at https://lists.sourceforge.net/lists/listinfo/firebird-devel