Hi, Steven, The particular invocation of ibis::bitvector::cnt() is unlikely to be the cause of it taking up 20% of your execution time. However, there was a chance made on August 6, 2014 that could be. If you have a profile that you could share, we would very much like to see it to get a better sense of what might be going on. Let us know.
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
