caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Gabriel Scherer <gabriel.scherer@gmail.com>
To: John Whitington <john@coherentgraphics.co.uk>
Cc: Francois Berenger <berenger@riken.jp>,
	OCaml Mailing List <caml-list@inria.fr>
Subject: Re: [Caml-list] an OCaml program profile
Date: Fri, 6 Sep 2013 10:49:32 +0200	[thread overview]
Message-ID: <CAPFanBH=Wt9veNxJOFQY+-3KUpRB5_UAM8fM_217dVzp9o2C+g@mail.gmail.com> (raw)
In-Reply-To: <5229923B.6090404@coherentgraphics.co.uk>

I have found the "poor man profiler" approach to work well when you
want to know not only which functions calls some slow runtime function
the most, but only in which situation (it depends on the callstack and
not only the source location). Ygrek's pmpa script is very helpful for
that
  http://ygrek.org.ua/p/code/pmpa


On Fri, Sep 6, 2013 at 10:28 AM, John Whitington
<john@coherentgraphics.co.uk> wrote:
> Hi,
>
>
> Francois Berenger wrote:
>>
>> Hello,
>>
>> I am running experiments with a program.
>> I'd like the program to run faster because
>> it would reduce experiments round-trip.
>>
>> Here is the top of the profile:
>> ---
>> Flat profile:
>>
>> Each sample counts as 0.01 seconds.
>> % cumulative self self total
>> time seconds seconds calls s/call s/call name
>> 58.07 132.13 132.13 161527987 0.00 0.00 caml_fl_allocate
>> 21.13 180.21 48.08 2339 0.02 0.02 caml_fl_add_blocks
>> 4.87 191.30 11.09 5497 0.00 0.00 mark_slice
>> 1.65 195.06 3.76 979591485 0.00 0.00 caml_page_table_lookup
>> 1.50 198.47 3.41 5620 0.00 0.00 sweep_slice
>> 1.20 201.21 2.74 186584504 0.00 0.00 caml_oldify_one
>> 1.04 203.57 2.36 134849325 0.00 0.00 compare_val
>> 1.02 205.89 2.32 290049921 0.00 0.00 caml_float_compare
>> 0.80 207.71 1.82 123048730 0.00 0.00 caml_hash
>> 0.76 209.44 1.73 161525648 0.00 0.00 caml_alloc_shr
>> ---
>>
>> I think the program spends most of its time doing garbage
>> collection.
>>
>> How can I make it go faster?
>
>
> Look further down the profile in the individual numbered sections for each
> function. The section for "caml_call_gc" usually provides the most useful
> start.
>
> For example, if most calls to caml_call_gc are from List.rev, look at calls
> to that etc. It's not entirely straightforward, but after a bit of following
> numbers around the file, you'll get used to it.
>
> Thanks,
>
> --
> John Whitington
> Director, Coherent Graphics Ltd
> http://www.coherentpdf.com/
>
>
>
> --
> Caml-list mailing list.  Subscription management and archives:
> https://sympa.inria.fr/sympa/arc/caml-list
> Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
> Bug reports: http://caml.inria.fr/bin/caml-bugs

  reply	other threads:[~2013-09-06  8:50 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-09-06  1:48 Francois Berenger
2013-09-06  8:14 ` Kakadu
2013-09-06  8:28 ` John Whitington
2013-09-06  8:49   ` Gabriel Scherer [this message]
2013-09-06  9:26     ` Francois Berenger

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to='CAPFanBH=Wt9veNxJOFQY+-3KUpRB5_UAM8fM_217dVzp9o2C+g@mail.gmail.com' \
    --to=gabriel.scherer@gmail.com \
    --cc=berenger@riken.jp \
    --cc=caml-list@inria.fr \
    --cc=john@coherentgraphics.co.uk \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).