English version
Accueil     À propos     Téléchargement     Ressources     Contactez-nous    

Ce site est rarement mis à jour. Pour les informations les plus récentes, rendez-vous sur le nouveau site OCaml à l'adresse ocaml.org.

Browse thread
Help needed for benchmarking OCaml on AMD64
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: 2008-04-21 (14:40)
From: Alain Frisch <alain@f...>
Subject: Help needed for benchmarking OCaml on AMD64

The new native dynamic linking feature requires some changes in the code
generator for (non-Windows) AMD64 targets. Currently, this change is 
enabled by passing the -dlcode option to ocamlopt. A module which has 
not been compiled with this option cannot be dynlinked.

Because -dlcode is only needed for AMD64 and it didn't exist before, 
most 3rd party libraries will likely not include this flag in their 
build system any time soon and they will thus be impossible to dynlink. 
This is not very satisfactory.

A question to be answered before the release of OCaml 3.11 is whether 
this option should be enabled by default (and maybe provide another 
option to disable the new behavior). The only reason not to do so would 
be a degradation of performance. I haven't observed any difference on 
small benchmarks I did some months ago, but I'd like to collect more 
benchmarking data before enabling -dlcode by default.

It would be great if some people could checkout the current CVS tree and
try to compile and run their time-consuming programs with or without 
-dlcode on AMD64 systems, and report what they found out. I expect 
potential differences to appear only for functionally intensive code (a 
lot of inter or intra module function calls). To help benchmarking, the 
current CVS includes the following hack: if the environment variable 
OCAML_DLCODE is set to a non-empty value, ocamlopt behaves as if -dlcode 
were enabled. It is thus trivial to recompile (e.g. via GODI) any 3rd 
party library which your code may depend on.

Any help will be appreciated!