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

Reply via email to