Boost logo

Boost :

Subject: Re: [boost] [function] function wrapping withnoexceptionsafetyguarantee
From: Daniel Walker (daniel.j.walker_at_[hidden])
Date: 2010-11-06 13:22:43


On Tue, Nov 2, 2010 at 7:20 PM, Jeffrey Lee Hellrung, Jr.
<jhellrung_at_[hidden]> wrote:
> On 11/02/2010 02:50 PM, Daniel Walker wrote:
> [...]
>>
>> Here are the results I got, again, using the build of g++ 4.2 provided
>> by my manufacturer.
>>
>> Data (Release):
>>            |  function   | function (static empty)
>> time/call  |  3.54e-07s  |  3.51e-07s
>> space/type |    64B      |    80B
>>
>> Data (Debug):
>>            |  function   | function (static empty)
>> time/call  |  2.05e-06s  |  2.04e-06s
>> space/type |    64B      |    80B
>>
>> You can see that removing the empty check from boost::function yields
>> about a 1% improvement in time per call to boost::signal. The
>> increased space per type overhead is the same as before: 16B.
>
> [...]
>
> [Butting in after only vaguely following this thread...]
>
> Would it also be appropriate to measure the "space/call", in addition to
> "time/call" and "space/type"?  Or is there no difference, or had this been
> addressed already?

Well, a call to boost::function does not cost any additional space.
However, there is a space/object cost, which the other benchmark does
measure. The space overhead per boost::function object is constant. On
my machine it's 32B for both of the empty state schemes.

Daniel Walker


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk