From: Xavier Leroy <Xavier.Leroy@inria.fr>
To: Mattias Waldau <mattias.waldau@abc.se>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] Obsessed by speed
Date: Sun, 27 May 2001 10:47:06 +0200 [thread overview]
Message-ID: <20010527104706.A7262@pauillac.inria.fr> (raw)
In-Reply-To: <AAEBJHFJOIPMMIILCEPBIEBBCLAA.mattias.waldau@abc.se>; from mattias.waldau@abc.se on Fri, May 18, 2001 at 09:51:07PM +0200
> 1. If I define Array.iter + a function that uses it,
> will ocamlopt combine these two functions two one?
> (I looked in the assembler code, but it seemed as
> ocamlopt didn't combine them)
You're right, the function inlining pass in ocamlopt is rather
conservative and doesn't inline and beta-reduce function arguments to
higher-order functions. Inlining is a delicate trade-off between too
little and too much (e.g. code size and compile time explosion), and
OCaml errs on the conservative side.
> 2. Do we need special Pentium-4 adaptions to utilize
> its very good float performance?
I'm not familiar with the P4 micro-architecture, so I don't know.
ocamlopt uses the standard IA32 stack-based model for floating-point
code. Apparently, the P4 can now do 64-bit float arithmetic between
true registers (the SSE2 model), and ocamlopt could generate better
(and simpler!) floating-point code for this model. Don't know how
much of a performance difference that would make, though.
At any rate, the ocamlopt port for AMD's x86-64 architecture will use
the SSE2 model.
> 3. Would ocamlopt benefit from a peephole optimizer of
> the assembler code? Or is the assembler code already
> optimal?
No assembly code is ever optimal, especially if machine-generated :-)
A peephole optimizer could remove some cosmetic inefficiencies, but I
doubt this would make a significant speed difference. Today's
processors have enough instruction-level parallelism and dynamic
instruction scheduling that a few redundant integer operations here
and there don't really hurt.
Other higher-level optimizations not currently performed could improve
performance more, e.g. common subexpression elimination on memory loads.
> 4. What is unboxed and what isn't?
> I have noticed that there is a
> continuos work to unbox more.
Very briefly:
Always unboxed:
int, char, bool, constant constructors of datatypes.
Locally unboxed (in expressions and let...in):
float, int32, nativeint (and int64 on 64-bit processors)
Unboxed inside arrays:
float
Unboxed inside big arrays:
all numerical types
Always boxed:
everything else (records, non-constant datatype constructors,
tuples, arrays, etc)
> 5. How do you make sense of gprof-output? Any suggestions?
The "info" docs for gprof contain a tutorial.
The function names that appear are of the form Modulename_functionname_NNN
where NNN is a unique integer.
Be careful with the call graph reported by gprof: it is totally
inaccurate for higher-order functions.
Hope this answers your questions.
- Xavier Leroy
-------------------
To unsubscribe, mail caml-list-request@inria.fr. Archives: http://caml.inria.fr
next prev parent reply other threads:[~2001-05-27 8:47 UTC|newest]
Thread overview: 17+ messages / expand[flat|nested] mbox.gz Atom feed top
2001-05-16 11:16 [Caml-list] ocamlopt and Windows DLL Dmitry Bely
2001-05-18 19:51 ` [Caml-list] Obsessed by speed Mattias Waldau
2001-05-21 16:44 ` Chris Hecker
2001-05-21 19:12 ` William Chesters
2001-05-27 8:47 ` Xavier Leroy [this message]
2001-05-31 15:13 ` [Caml-list] report describing optimization of numerical computing of the ocaml compiler Peter Ronnquist
2001-05-31 15:15 ` Peter Ronnquist
2001-05-31 16:12 ` Brian Rogoff
2001-06-01 2:30 ` [Caml-list] report describing optimization of numerical computingof " John Max Skaller
2001-06-01 4:10 ` [Caml-list] report describing optimization of numerical computing of " Tom _
2001-06-01 4:20 ` Niall Dalton
2001-06-01 6:33 ` [Caml-list] SISAL (Was: report describing optimization of numerical computing...) Florian Hars
2001-06-01 22:22 ` Tom _
2001-05-31 15:15 ` [Caml-list] report describing optimization of numerical computing of the ocaml compiler Peter Ronnquist
2001-05-22 17:10 ` [Caml-list] ocamlopt and Windows DLL Dmitry Bely
2001-05-28 14:53 ` Dmitry Bely
2001-05-28 15:29 ` Xavier Leroy
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=20010527104706.A7262@pauillac.inria.fr \
--to=xavier.leroy@inria.fr \
--cc=caml-list@inria.fr \
--cc=mattias.waldau@abc.se \
/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