« Previous | Next » 

Revision d277b075

IDd277b075c8d3784896ff4d252a137fd7f5905990
Parent 228ef0f2
Child c3231353

Added by Iustin Pop over 10 years ago

Optimise recursive Query filters

Currently, the And and Or filters use very nice code, e.g. in case of
OrFilter:

any id <$> mapM evaluateFilter flts

However, looking at the memory profiles shows that application of
any/id to monadic values via '<$>' does not work nicely, losing the
'early' success property. This results in too much memory being used
for thunks in monadic sequencing.

Rather than trying to add more strictness (not sure exactly how, TBH),
switching these to explicit recursion solves the problem, since we
take the 'early' exit problem in our hands and we are explicit about
it.

Memory usage in case of big (e.g. 1000 'Or' elements) is reduced
significantly, and thus also the runtime.

Signed-off-by: Iustin Pop <>
Reviewed-by: Michele Tartara <>

Files

  • added
  • modified
  • copied
  • renamed
  • deleted

View differences