Trying the mailing list
From: <Enns>, "Enns, Steven" <[email protected]<mailto:[email protected]>>
Date: Tuesday, December 9, 2014 at 11:20 AM
To: "K. John Wu" <[email protected]<mailto:[email protected]>>
Subject: question about doEvaluate
Hi John,
I am profiling my application and noticed 20% of my time is spent in
ibis::query::doEvaluate() -> ibis::bitvector::cnt() -> ibis::bitvector::do_cnt()
case ibis::qExpr::LOGICAL_OR: {
ierr = doEvaluate(term->getLeft(), mask, ht);
if (ierr >= 0 && ht.cnt() < mask.cnt()) {
ibis::bitvector b1;
ierr = doEvaluate(term->getRight(), mask, b1);
if (ierr > 0)
ht |= b1;
if (ierr >= 0)
ierr = ht.sloppyCount();
}
break;
}
* Is this an optimization?
* What is the purpose of the bitvector called ‘mask'?
* What does it mean to compare ht.cnt() to mask.cnt()?
* ibis::bitvector::cnt() caches the result in ibis::bitvector::nset and
ibis::bitvector::nbit. Should this call to ht.cnt() result in a 'cache hit'?
It seems ht changes at every node of the query so 'cache miss' seems reasonable.
Thanks!
_______________________________________________
FastBit-users mailing list
[email protected]
https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users