Hi, Steven,

Thanks for the information.  I presume that you are ok with the
current version then?

By the way, what shows up as the more time-consuming function in your
profiles?

John


On 12/17/14 11:12 AM, Enns, Steven wrote:
> Thanks John!  We see 13.5% improvement in total runtime using r.
> According to oprofile the time spent in do_cnt is down from 20% to 4.3%.
> Unfortunately I don¹t have call counts since I¹m not using an instrumented
> profiler (just pc sampling).  gprof was giving strange results because my
> application is multi threaded.
> 
> On 12/16/14, 9:29 PM, "K. John Wu" <[email protected]> wrote:
> 
>> 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
> 
> _______________________________________________
> 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