On Mon, Aug 24, 2009 at 1:50 PM, Joel Reymont<[email protected]> wrote:
> I'm trying to calculate the run time of all the initializers in Firefox [1].
> I'm placing the initialization time by library into an aggregation but I
> also need the sum of all the values in the aggregation. Is there an easy way
> to achieve this with D?
>
> I tried using a static variable (see startup.d) but initializers are being
> run in different threads and they overwrite my global counter.
>
Why not just use a separate aggregation for this? For example, in
this one clause, you could do this:
pid$target::ImageLoader??runInitializers*:return
/self->ts && self->lib != 0/
{
this->delta = timestamp - self->ts;
@initint = sum(this->delta / 1000000000);
@initfrac = sum(this->delta % 1000000000);
@int[self->lib] = sum(this->delta / 1000000000);
@frac[self->lib] = sum(this->delta % 1000000000);
self->lib = 0;
self->ts = 0;
}
And then print the value with a printa() statement:
printa("Static init: %...@u.%@03us for %s\n", @int, @frac);
printa("Static initialization: %...@u.%@03us\n", @initint, @initfrac);
Chad
_______________________________________________
dtrace-discuss mailing list
[email protected]