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

Reply via email to