From: Kuba Ober <ober.14@osu.edu>
To: caml-list@yquem.inria.fr
Subject: Re: [Caml-list] Odd performance result with HLVM
Date: Wed, 4 Mar 2009 11:30:06 -0500 [thread overview]
Message-ID: <A89DF7A3-81DD-4F03-B5B3-0F76AFB551B8@osu.edu> (raw)
In-Reply-To: <caee5ad80903040817m7f0a8afer2abf80f75c16a692@mail.gmail.com>
On Mar 4, 2009, at 11:17 AM, Mikkel Fahnøe Jørgensen wrote:
> When looking at the benchmark game and other benchmarks I have seen, I
> noticed that Haskell is almost as fast as OCaml and sometimes faster.
> Some Lisp implementations are also pretty fast.
>
> However, when you look at memory consumption OCaml uses considerably
> less memory, except for languages in the C family.
>
> I suspect that many real world performance scenarios, such as heavily
> loaded web servers and complex simulations, depend very much on memory
> consumption. This is both because of GC overhead and because of the
> slower memory pipeline the more cache levels are involved.
>
> So in case of a new JIT solution for OCaml, I believe it is important
> to observe this aspect as well.
I believe it is also important not to dynamically allocate memory for no
good reason.
All of my realtime numerical code uses statically allocated memory with
overlaying based on execution flow of basic blocks. That has zero
runtime
overhead: the produced machine code has fixed addresses for data
(not all data of course).
It reduces to whether a "basic block" can be re-entered from its
future (downstream)
or not. If it can, you have to use stack or heap. If it won't, then
you can do static
allocation. The potential cost is if given function is entered from
many points.
At that point you can get some overhead since the overlaying has to take
into account all possible ways the code is reached. This can be
mitigated
by generating more than one copy of the function. It makes sense when
you
have some free code ROM, but your RAM is almost full.
This of course can only be done when you do whole-project compilation.
If you
compile "modules" separately, you have to fall back on doing it in the
linker,
where all you have is the function call graph and available
granularity is much
worse, at bigger RAM overhead. The code ROM overhead is then none
since linker
can hardly generate copies of functions; at the point where you copy
functions
you may as well do other optimizations, so linker is way too late to
do that
efficiently.
There's no reason not to use those techniques in code that runs on
"large"
platforms. It'd at least artificially boost some benchmark results ;)
Cheers, Kuba
next prev parent reply other threads:[~2009-03-04 16:30 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-02-28 1:12 Jon Harrop
2009-02-28 20:18 ` [Caml-list] " Kuba Ober
2009-02-28 21:21 ` Richard Jones
2009-02-28 21:59 ` Jon Harrop
2009-03-02 0:38 ` Jon Harrop
2009-02-28 21:52 ` Jon Harrop
2009-03-02 3:20 ` Jon Harrop
2009-03-02 14:28 ` Florent Ouchet
2009-03-02 16:18 ` Jon Harrop
2009-03-02 20:09 ` Kuba Ober
2009-03-04 16:17 ` Mikkel Fahnøe Jørgensen
2009-03-04 16:30 ` Kuba Ober [this message]
2009-03-04 18:15 ` Mikkel Fahnøe Jørgensen
2009-03-04 18:32 ` Jon Harrop
2009-03-04 19:05 ` Jon Harrop
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=A89DF7A3-81DD-4F03-B5B3-0F76AFB551B8@osu.edu \
--to=ober.14@osu.edu \
--cc=caml-list@yquem.inria.fr \
/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