Hi, Steven, Based on guess that the problem was caused by a solution implemented to address a thread-safety issue raised earlier this year (Change made on 2014/08/06). I have implemented a change to hopefully resolve this in a slightly better way this way. The change is in SVN revision 788. Please give it a try when you get the chance.
Thanks, John On 12/15/14 5:57 PM, Enns, Steven wrote: > 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 > _______________________________________________ FastBit-users mailing list [email protected] https://hpcrdm.lbl.gov/cgi-bin/mailman/listinfo/fastbit-users
