Re: [Monetdb-developers] [Monetdb-pf-checkins] pathfinder/compiler/algebra algopt.c, , 1.30, 1.31 planner.c, , 1.56, 1.57 properties.c, , 1.34, 1.35
Hi Jan,
This one is likely to speed up my use of MXQ a lot! Does "references" also mean that a lot less elements will be constructed? One of the scalability bottlenecks that I frequently encounter in my experiments is not that it is slow, but that I create more than 2^32 elements (which doesn't fit in a bat with 32-bit oids). Avoiding subtree copies would probably improve the scalability of my experiments enormously. I must definitely push the move to the algebra backend :-)
Maurice.
Jan Rittinger wrote:
Update of /cvsroot/monetdb/pathfinder/compiler/algebra In directory sc8-pr-cvs16.sourceforge.net:/tmp/cvs-serv13092/algebra
Modified Files: algopt.c planner.c properties.c Log Message: -- Added node based properties that check (top-down) if ...
... the node may be used (indirectly) for serialization ... the node id may be used ... the node order may be used ... the node values may be accessed ... a downward axis is applied lateron (child, descendant, descendant-or-self) ... a side-way axis is applied lateron (following, following-sibling, preceding, preceding-sibling) ... an upward axis is applied lateron (parent, ancestor, ancestor-or-self) ... a self axis is applied lateron (self, ancestor-or-self, descendant-or-self) ... the node may be used as input to node construction
-- Exploited the node base property that checks for the downward axis property:
For every content constructor whose input is not queried we can use the physical shallow content constructor that makes use of references instead of creating a subtree copy.
(This sped up the execution time of XMark Q10 (scale factor 1) by 60% and the execution time of XMark Q15 by 150%.)
U algopt.c Index: algopt.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/algopt.c,v retrieving revision 1.30 retrieving revision 1.31 diff -u -d -r1.30 -r1.31 --- algopt.c 25 Feb 2008 15:37:04 -0000 1.30 +++ algopt.c 1 Apr 2008 16:37:11 -0000 1.31 @@ -339,6 +339,7 @@ false /* composite key */, true /* key */, false /* ocols */,
true /* req_node */, false /* reqval */, true /* level */, true /* refctr */,
@@ -356,6 +357,7 @@ true /* composite key */, true /* key */, true /* ocols */,
true /* req_node */, true /* reqval */, true /* level */, true /* refctr */,
U planner.c Index: planner.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/planner.c,v retrieving revision 1.56 retrieving revision 1.57 diff -u -d -r1.56 -r1.57 --- planner.c 26 Mar 2008 11:20:47 -0000 1.56 +++ planner.c 1 Apr 2008 16:37:13 -0000 1.57 @@ -1784,7 +1784,7 @@ *(plan_t **) PFarray_at (R(n)->plans, i), sortby (iter, pos)));
- if (false /* magic flag to enable shallow content constructors */)
- if (!PFprop_node_content_queried (n->prop, att_item)) /* for each plan, generate a constructor */ for (unsigned int i = 0; i < PFarray_last (ordered_in); i++) add_plan (ret,
U properties.c Index: properties.c =================================================================== RCS file: /cvsroot/monetdb/pathfinder/compiler/algebra/properties.c,v retrieving revision 1.34 retrieving revision 1.35 diff -u -d -r1.34 -r1.35 --- properties.c 14 Jan 2008 14:05:24 -0000 1.34 +++ properties.c 1 Apr 2008 16:37:14 -0000 1.35 @@ -122,9 +122,9 @@ void PFprop_infer (bool card, bool const_, bool set, bool dom, bool icol, bool ckey,
bool key, bool ocols, bool reqval,
bool level, bool refctr, bool guides,
bool ori_names, bool unq_names,
bool key, bool ocols, bool req_node,
bool reqval, bool level, bool refctr,
bool guides, bool ori_names, bool unq_names, PFla_op_t *root, PFguide_tree_t *guide)
{ PFprop_create_prop (root); @@ -145,6 +145,8 @@ PFprop_infer_guide (root, guide); if (const_) PFprop_infer_const (root);
- if (req_node)
if (reqval) PFprop_infer_reqval (root); if (dom)PFprop_infer_req_node (root);
Check out the new SourceForge.net Marketplace. It's the best place to buy or sell services for just about anything Open Source. http://ad.doubleclick.net/clk;164216239;13503038;w?http://sf.net/marketplace _______________________________________________ Monetdb-pf-checkins mailing list Monetdb-pf-checkins@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/monetdb-pf-checkins
On 04/02/2008 09:56 AM, Keulen, M. van (Maurice) wrote with possible deletions:
Hi Jan,
This one is likely to speed up my use of MXQ a lot! Does "references" also mean that a lot less elements will be constructed? One of the scalability bottlenecks that I frequently encounter in my experiments is not that it is slow, but that I create more than 2^32 elements (which doesn't fit in a bat with 32-bit oids). Avoiding subtree copies would probably improve the scalability of my experiments enormously. I must definitely push the move to the algebra backend :-)
Hi Maurice,
you are completely correct :)
As long as you do *not* query the constructed nodes but use them only for serialization the subtree copying will produce at most twice as many nodes (reference+original) as you construct.
Note that this checkin does not improve the performance if you query the constructed nodes using a downward axis (e.g., if you use the constructed nodes as an intermediate 'tuple' representation).
Jan
participants (2)
-
Jan Rittinger
-
Keulen, M. van (Maurice)