performance analysis producer_consumer.cc TEST_T5
Will Cohen
wcohen@redhat.com
Tue Feb 17 23:03:00 GMT 2004
law@redhat.com wrote:
> In message <4030DE6D.50607@redhat.com>, Will Cohen writes:
> >I looked over the code a bit more. The tight loop that the code spends
> >most of its time is the result of the size() operation. The code is
> >counting the number of elements in the list. The size() operation for
> >the list basically has to walk the linked list. The means of counting
> >the number of objects in other containers don't have a size() operation
> >that is O(n). The other size operations usually get a couple values,
> >subtract, and scale the result. There are two possible reasons I can
> >think of things going wrong with the list version as a result of the
> >size() operation not being atomic:
> Funny, a one of the customers you visited a couple weeks ago has complained
> repeatedly about not having an efficient means to get the number of objects
> on a list....
>
> jeff
>
The O(n) cost of list containers is certainly a drawback.
There is also a problem related to the threading with this particular
performance test code. The uniprocessor machine the runtime was about
1/30 the cpu time for the smp machine. If things were working correctly
in the producer_consumer.cc code, the lists should be relatively short.
That one function should not take 99.9% of the time (okay that is an
exaggeration. it has 99.8996% of the samples for the test).
-Will
More information about the Libstdc++
mailing list