[m-rev.] for post-commit review: speed up the compilation of large predicates

Julien Fischer juliensf at cs.mu.OZ.AU
Mon May 23 18:53:12 AEST 2005




On Mon, 23 May 2005, Zoltan Somogyi wrote:

> The third performance problem is the quadratic or worse behavior of the mode
> checker when merging the instmaps of disjuncts at the ends of large
> disjunctions. With our old setup, this was inevitable, since given a bunch of
> facts of the form
>
> 	edge(1, 2).
> 	edge(2, 3).
> 	edge(3, 4).
> 	...
>
> etc, the instmap delta the mode checker builds for HeadVar__1 for the
> disjunction of clauses is free -> bound(1; 2; 3; ...). The solution to that
> is to add a new pragma, mode_check_clauses, that causes the mode checker
> to check each clause individually, and to create a simple free -> ground
> (or whatever the declared mode calls for) instmap delta for HeadVar__1.
> We should consider making this pragma be implied for predicates defined
> by lots of facts, but this diff does not do that. This change takes the
> time to modecheck that 16000-fact predicate from ~360s to ~5s.
>

Is this new pragma supposed to a developer only feature, or is it
intended for general use?

Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
post:  mercury-reviews at cs.mu.oz.au
administrative address: owner-mercury-reviews at cs.mu.oz.au
unsubscribe: Address: mercury-reviews-request at cs.mu.oz.au Message: unsubscribe
subscribe:   Address: mercury-reviews-request at cs.mu.oz.au Message: subscribe
--------------------------------------------------------------------------



More information about the reviews mailing list