From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Ada.Execution_Time
Date: Fri, 7 Jan 2011 00:25:10 -0600
Date: 2011-01-07T00:25:10-06:00 [thread overview]
Message-ID: <ig6bk8$1jg$1@munin.nbi.dk> (raw)
In-Reply-To: 8omvicFgm0U1@mid.individual.net
"Niklas Holsti" <niklas.holsti@tidorum.invalid> wrote in message
news:8omvicFgm0U1@mid.individual.net...
...
>> That's probably enough for soft real-time systems anyway; and the
>> facilities are useful for profiling and the like even without any strong
>> connection to reality.
>
> I don't see how Ada.Execution_Time would be very useful for profiling.
> While it could show you which tasks are CPU hogs, it does not resolve the
> execution-time consumption to subprograms or subprogram parts, which I
> think would be the important information for code redesigns aiming at
> improving speed. Real profilers usually do give you subprogram-level or
> even statement-level information.
I was thinking of "profiling" by hand, essentially by adding profiler calls
to "interesting" points in the code. I have a number of packages which are
designed for this purpose.
My experience with subprogram level profiling is that it often changes the
results too much, as the overhead of profiling can be a lot more than the
overhead of calling small subprograms (like the classic Getters/Setters).
Perhaps it is just the way that we do it in Janus/Ada (by adding it to
Enter_Walkback/Exit_Walkback calls that occur at the entrance and exit of
every subprogram [unless turned off by compiler switch or pragma], which
mean you don't have to recompile anything other than the main subprogram).
Instruction level profiling (which is used to provide statement profiling)
is a statistical method, and that has its own problems (its possible to get
into a situation where the program and profiler operate in sync, such that
the profiler never sees the execution of some of the code). It's also
impractical unless you have a very fast timer interrupt or a long time to
run (machines have gotten too fast for the one I used to use -- it only gets
a few hits before the compilations are finished...).
> Of course, a profiler that collects subprogram-level execution time (per
> call, for example) but does not know about Ada task preemption will
> probably produce wildly wrong results.
Right, and that is a problem with both my profiling packages and the
Janus/Ada subprogram profiler. They both use Calendar.Clock, which is
obviously oblivious to task switching. Ada.Execution_Time would be a major
improvement in that respect.
Randy.
P.S. I think I owe you a compiler update. Did you read on our mailing list
about the latest beta of Janus/Ada?
next prev parent reply other threads:[~2011-01-07 6:25 UTC|newest]
Thread overview: 124+ messages / expand[flat|nested] mbox.gz Atom feed top
2010-12-12 4:19 Ada.Execution_Time BrianG
2010-12-12 5:27 ` Ada.Execution_Time Jeffrey Carter
2010-12-12 16:56 ` Ada.Execution_Time Jeffrey Carter
2010-12-12 21:59 ` Ada.Execution_Time BrianG
2010-12-12 22:08 ` Ada.Execution_Time BrianG
2010-12-13 9:28 ` Ada.Execution_Time Georg Bauhaus
2010-12-13 22:25 ` Ada.Execution_Time Randy Brukardt
2010-12-13 22:42 ` Ada.Execution_Time J-P. Rosen
2010-12-14 3:31 ` Ada.Execution_Time Jeffrey Carter
2010-12-14 15:42 ` Ada.Execution_Time Robert A Duff
2010-12-14 16:17 ` Ada.Execution_Time Jeffrey Carter
2010-12-14 19:10 ` Ada.Execution_Time Warren
2010-12-14 20:36 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-14 20:48 ` Ada.Execution_Time Jeffrey Carter
2010-12-14 8:17 ` Ada.Execution_Time Vinzent Hoefler
2010-12-14 15:51 ` Ada.Execution_Time Adam Beneschan
2010-12-14 15:53 ` Ada.Execution_Time Robert A Duff
2010-12-14 17:17 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-14 17:45 ` Ada.Execution_Time Robert A Duff
2010-12-14 18:23 ` Ada.Execution_Time Adam Beneschan
2010-12-14 21:02 ` Ada.Execution_Time Randy Brukardt
2010-12-15 22:52 ` Ada.Execution_Time Keith Thompson
2010-12-15 23:14 ` Ada.Execution_Time Adam Beneschan
2010-12-17 0:44 ` Ada.Execution_Time Randy Brukardt
2010-12-17 17:54 ` Ada.Execution_Time Warren
2010-12-20 21:28 ` Ada.Execution_Time Keith Thompson
2010-12-21 3:23 ` Ada.Execution_Time Robert A Duff
2010-12-21 8:04 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-21 17:19 ` Ada.Execution_Time Robert A Duff
2010-12-21 17:43 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-14 19:43 ` Ada.Execution_Time anon
2010-12-14 20:09 ` Ada.Execution_Time Adam Beneschan
2010-12-15 0:16 ` Ada.Execution_Time BrianG
2010-12-15 19:17 ` Ada.Execution_Time jpwoodruff
2010-12-15 21:42 ` Ada.Execution_Time Pascal Obry
2010-12-16 3:54 ` Ada.Execution_Time jpwoodruff
2010-12-17 7:11 ` Ada.Execution_Time Stephen Leake
2010-12-15 21:40 ` Ada.Execution_Time Simon Wright
2010-12-15 23:40 ` Ada.Execution_Time BrianG
2010-12-15 22:05 ` Ada.Execution_Time Randy Brukardt
2010-12-16 1:14 ` Ada.Execution_Time BrianG
2010-12-16 5:46 ` Ada.Execution_Time Jeffrey Carter
2010-12-16 16:13 ` Ada.Execution_Time BrianG
2010-12-16 11:37 ` Ada.Execution_Time Simon Wright
2010-12-16 17:24 ` Ada.Execution_Time BrianG
2010-12-16 17:45 ` Ada.Execution_Time Adam Beneschan
2010-12-16 21:13 ` Ada.Execution_Time Jeffrey Carter
2010-12-17 0:35 ` New AdaIC site (was: Ada.Execution_Time) Randy Brukardt
2010-12-16 13:08 ` Ada.Execution_Time Peter C. Chapin
2010-12-16 17:32 ` Ada.Execution_Time BrianG
2010-12-16 18:17 ` Ada.Execution_Time Jeffrey Carter
2010-12-16 8:45 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-16 16:49 ` Ada.Execution_Time BrianG
2010-12-16 17:52 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-17 8:49 ` Ada.Execution_Time Niklas Holsti
2010-12-17 9:32 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-17 11:50 ` Ada.Execution_Time Niklas Holsti
2010-12-17 13:10 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-18 21:20 ` Ada.Execution_Time Niklas Holsti
2010-12-19 9:57 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-25 11:31 ` Ada.Execution_Time Niklas Holsti
2010-12-26 10:25 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-27 12:44 ` Ada.Execution_Time Niklas Holsti
2010-12-27 15:28 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-27 20:11 ` Ada.Execution_Time Niklas Holsti
2010-12-27 21:34 ` Ada.Execution_Time Simon Wright
2010-12-28 10:01 ` Ada.Execution_Time Niklas Holsti
2010-12-28 14:17 ` Ada.Execution_Time Simon Wright
2010-12-27 21:53 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 14:14 ` Ada.Execution_Time Simon Wright
2010-12-28 15:08 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 16:18 ` Ada.Execution_Time Simon Wright
2010-12-28 16:34 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-31 0:40 ` Ada.Execution_Time BrianG
2010-12-31 9:09 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 14:46 ` Ada.Execution_Time Niklas Holsti
2010-12-28 15:42 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 16:27 ` Ada.Execution_Time (see below)
2010-12-28 16:55 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 19:41 ` Ada.Execution_Time (see below)
2010-12-28 20:03 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-28 22:39 ` Ada.Execution_Time Simon Wright
2010-12-29 9:07 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-27 17:24 ` Ada.Execution_Time Robert A Duff
2010-12-27 22:02 ` Ada.Execution_Time Randy Brukardt
2010-12-27 22:43 ` Ada.Execution_Time Robert A Duff
2010-12-27 22:11 ` Ada.Execution_Time Randy Brukardt
2010-12-29 12:48 ` Ada.Execution_Time Niklas Holsti
2010-12-29 14:30 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-29 16:19 ` Ada.Execution_Time (see below)
2010-12-29 16:51 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-29 19:57 ` Ada.Execution_Time (see below)
2010-12-29 21:20 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-30 5:13 ` Ada.Execution_Time Randy Brukardt
2010-12-30 13:37 ` Ada.Execution_Time Niklas Holsti
2010-12-29 20:32 ` Ada.Execution_Time Niklas Holsti
2010-12-29 21:21 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-30 13:34 ` Ada.Execution_Time Niklas Holsti
2010-12-30 19:23 ` Ada.Execution_Time Niklas Holsti
2010-12-30 5:06 ` Ada.Execution_Time Randy Brukardt
2010-12-30 23:49 ` Ada.Execution_Time Niklas Holsti
2010-12-31 23:34 ` Ada.Execution_Time Randy Brukardt
2011-01-01 13:52 ` Ada.Execution_Time Niklas Holsti
2011-01-01 14:42 ` Ada.Execution_Time Simon Wright
2011-01-01 16:01 ` Ada.Execution_Time Simon Wright
2011-01-01 19:18 ` Ada.Execution_Time Niklas Holsti
2011-01-03 21:27 ` Ada.Execution_Time Randy Brukardt
2011-01-06 22:55 ` Ada.Execution_Time Niklas Holsti
2011-01-07 6:25 ` Randy Brukardt [this message]
2011-01-01 15:54 ` Ada.Execution_Time Simon Wright
2011-01-03 21:33 ` Ada.Execution_Time Randy Brukardt
2011-01-05 15:55 ` Ada.Execution_Time Brad Moore
2010-12-17 8:59 ` Ada.Execution_Time anon
2010-12-19 3:07 ` Ada.Execution_Time BrianG
2010-12-19 4:01 ` Ada.Execution_Time Vinzent Hoefler
2010-12-19 11:00 ` Ada.Execution_Time Niklas Holsti
2010-12-21 0:37 ` Ada.Execution_Time Randy Brukardt
2010-12-21 1:20 ` Ada.Execution_Time Jeffrey Carter
2010-12-19 12:27 ` Ada.Execution_Time Dmitry A. Kazakov
2010-12-21 0:32 ` Ada.Execution_Time Randy Brukardt
2010-12-19 22:54 ` Ada.Execution_Time anon
2010-12-20 3:14 ` Ada.Execution_Time BrianG
2010-12-22 14:30 ` Ada.Execution_Time anon
2010-12-22 20:09 ` Ada.Execution_Time BrianG
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox