[m-rev.] diff: add library routines for controlling profiling
Julien Fischer
juliensf at csse.unimelb.edu.au
Wed Sep 27 18:27:19 AEST 2006
On Wed, 27 Sep 2006, Ian MacLarty wrote:
> On Wed, Sep 27, 2006 at 05:28:22PM +1000, Julien Fischer wrote:
>>
>> On Wed, 27 Sep 2006, Ian MacLarty wrote:
>>
>>> On Wed, Sep 27, 2006 at 08:19:41AM +0200, Peter Ross wrote:
>>>> Hi,
>>>>
>>>>
>>>> ===================================================================
>>>>
>>>>
>>>> Estimated hours taken: 1
>>>> Branches: main
>>>>
>>>> library/benchmarking.m:
>>>> Programmatically turn profiling on and off.
>>>>
>>>>
>>>> Index: library/benchmarking.m
>>>> ===================================================================
>>> ...
>>>> +
>>>> +:- pragma foreign_decl(c, local, "
>>>> +#include ""mercury_prof.h""
>>>> +#include ""mercury_heap_profile.h""
>>>> +").
>>>> +
>>>> +:- pragma foreign_proc(c, turn_off_call_profiling,
>>>> + [will_not_call_mercury, thread_safe, tabled_for_io], "
>>>
>>> tabled_for_io doesn't have any effect if there are no io state arguments
>>> (even if the proc is impure). I'm not sure you want to table these
>>> anyway, since I wouldn't imagine anyone would want to debug and profile
>>> their program at the same time.
>>
>> Yes, but the calls to them might still be in a program that is being
>> debugged.
>>
>
> But such calls would be no-ops, so tabling would be unnecessary.
They're foreign code; how is the Mercury compiler to know that they
are no-ops?
> Anyway consider if these were tabled and you were debugging and
> profiling the program at the same time. Suppose profiling were turned off at
> program start and then turned on half way through a long computation.
> Then suppose you perform a retry to somewhere before the profiling is
> turned on. Now on re-execution you'll get profiling of parts of the
> program where profiling should be been turned off and double-profiling of other
> parts. Of course disabling tabling won't change this, but it seems
> silly to have a tabled_for_io there when that's not going to do anything
> useful.
It's not silly to have it there if it stops the debugger complaining
about unsafe retries - which is presumably why you would put it there.
Julien.
--------------------------------------------------------------------------
mercury-reviews mailing list
Post messages to: mercury-reviews at csse.unimelb.edu.au
Administrative Queries: owner-mercury-reviews at csse.unimelb.edu.au
Subscriptions: mercury-reviews-request at csse.unimelb.edu.au
--------------------------------------------------------------------------
More information about the reviews
mailing list