caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: art yerkes <ayerkes@on-demand-tech.com>
To: caml-list@inria.fr
Subject: Re: [Caml-list] ocaml and large development projects
Date: Tue, 3 Jun 2003 09:31:51 -0500	[thread overview]
Message-ID: <20030603093151.159e5b1f.ayerkes@on-demand-tech.com> (raw)
In-Reply-To: <4.3.2.7.2.20030602171041.045da898@localhost>

On Mon, 02 Jun 2003 17:31:46 -0700
Chris Hecker <checker@d6.com> wrote:

> 
> >In other words, don't worry about it. Ocaml is FAST. [...]
> >So you are expecting poor performance where it
> >simply doesn't exist.
> 
> Uh, I must have missed it when you stopped by my office and came to this 
> conclusion from looking at actual data from my project instead of just 
> asserting it on a mailing list.  :)  Another example of 
> You-Don't-Need-This-itis.
> 
> Actually, ocamlopt compile speeds are already a problem for me, and my 
> project is only about 20% done, LOC-wise.  This is a small problem for me 
> now that's going to be a huge problem soon enough unless I can get it 
> fixed.  Perhaps I have a lower process-overhead tolerance than you.  I've 
> already had to change my project around so only the files that need it use 
> camlp4 (for streams) because it was too slow.  I was counting on ocamlopt 
> working "correctly" and allowing this decoupling as well, and again, I'm 
> amazed it doesn't.  I'm hoping that the ocaml team takes this seriously and 
> fixes it soon (although no one from Inria has responded to this thread, 
> which worries me).
> 
> >[lots of ranting about software houses snipped]
> 
> In spite of these generalizations about developers and organizations, it is 
> not hard in C++ to decouple a large project.  All C++ compilers support 
> this "feature".  It's done every day in large projects, and it mostly 
> works.  It appears impossible with ocamlopt given the current state of the 
> compiler.  There is a fundamental and important difference between "often 
> people don't do it in C++ and John thinks they're stupid" and "it is 
> physically impossible to do so in ocaml".
> 
> Anyway, back to the problem:  it seems like the hacked way to enable this 
> is to checksum the cmi and compare the new one to the old one and if they 
> match then don't update the new one during cmx compilation.  That, coupled 
> with a way to disable code inlining would allow you to control decoupling 
> fairly well.  Unless I'm missing something; I haven't looked into this yet 
> (we had a baby :).
> 
> Chris

Have you thought of trying to use Gerd Stolpmann's Dl package?  Although that's
not exactly its purpose you'll be able to use it to implement each module in
a separate shared library.  It's fairly trivial to adapt it to work on win32.

In order to generate the loader for each part, you use:

ocamldlgen original_implementation.ml implementing_library.dll > stub_impl.ml

And build your bits as dlls with something like:

ocamlopt -pack <*.cmx> -output-obj -o packed.obj
link /dll /out:implementing_library.dll packed.obj $(LIBS)

This would allow you to separate your project into as many separately compiled
subparts as you want without sacrificing inlining within the parts.

-- 
`No, you don't understand,' the Knight said, looking a little vexed. 
`That's what the name is called. The name really is "The Aged Aged 
Man."'
-- Lewis Carroll

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners


  parent reply	other threads:[~2003-06-03 14:29 UTC|newest]

Thread overview: 63+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <ocaml@tagger.yapper.org>
2003-03-31 16:51 ` [Caml-list] How can I check for the use of polymorphic equality? Neel Krishnaswami
2003-03-31 17:33   ` brogoff
2003-04-03 19:44   ` Jason Hickey
2003-04-03 20:40     ` Pierre Weis
2003-04-03 20:53       ` Chris Hecker
2003-04-04  8:46         ` Pierre Weis
2003-04-04 19:05           ` Jason Hickey
2003-04-04  9:10         ` Andreas Rossberg
2003-05-14 11:43 ` [Caml-list] ocaml and large development projects Traudt, Mark
2003-05-14 15:52   ` Jason Hickey
2003-05-18  5:32     ` Chris Hecker
2003-05-18  5:44       ` David Brown
2003-05-18  6:10         ` Chris Hecker
2003-05-18 11:13           ` John Carr
2003-05-18 16:51             ` Ed L Cashin
2003-05-18 18:08               ` Lex Stein
2003-05-18 19:08                 ` Ed L Cashin
2003-05-18 19:55                   ` Lex Stein
2003-05-19  8:13                   ` Markus Mottl
2003-05-19  8:33                     ` Nicolas Cannasse
2003-06-02 21:59                     ` John Max Skaller
2003-05-18 23:19                 ` Chris Hecker
2003-05-18 14:38           ` David Brown
2003-05-18 16:00             ` Ville-Pertti Keinonen
2003-05-19 15:36           ` Brian Hurt
2003-05-19 19:31             ` Chris Hecker
2003-05-19 23:39               ` Seth Kurtzberg
2003-05-20  8:07               ` [Caml-list] ocaml as *.so (was: ...and large development projects) Wolfgang Müller
2003-05-20  8:42                 ` [Caml-list] Reading a file Siegfried Gonzi
2003-05-20 10:21                   ` Mattias Waldau
2003-05-20 10:48                   ` Nicolas Cannasse
2003-05-20 10:55                   ` Markus Mottl
2003-05-20 13:20                   ` Michal Moskal
2003-05-20 12:21                     ` Siegfried Gonzi
2003-05-21  6:11                     ` Siegfried Gonzi
2003-05-21  6:48                       ` Siegfried Gonzi
2003-05-21  6:53                         ` Siegfried Gonzi
2003-05-21  9:16                           ` Markus Mottl
2003-05-21 10:04                             ` Eray Ozkural
2003-05-21 16:20                               ` brogoff
2003-05-21  8:21                       ` Michal Moskal
2003-05-21  7:24                         ` [Caml-list] PsiLAB works fine under Linux SuSE 8 Siegfried Gonzi
2003-05-21  9:11                       ` [Caml-list] Reading a file Markus Mottl
2003-05-22  6:27                         ` Siegfried Gonzi
2003-05-22 10:26                           ` Markus Mottl
2003-05-23  5:59                             ` Siegfried Gonzi
2003-05-23  6:04                               ` Siegfried Gonzi
2003-05-20 10:45                 ` [Caml-list] ocaml as *.so (was: ...and large development projects) Nicolas Cannasse
2003-05-20 11:17                   ` Wolfgang Müller
2003-05-20 11:31                     ` Nicolas Cannasse
2003-05-20 11:40                       ` Wolfgang Müller
2003-06-02 22:40                 ` John Max Skaller
2003-06-03 13:26                   ` [Caml-list] ocaml as *.so Remi Vanicat
2003-06-02 22:42               ` [Caml-list] ocaml and large development projects John Max Skaller
2003-06-02 21:24           ` John Max Skaller
2003-06-02 21:12       ` John Max Skaller
2003-06-03  0:31         ` Chris Hecker
2003-06-03 10:13           ` Michal Moskal
2003-06-03 18:12             ` Chris Hecker
2003-06-03 14:31           ` art yerkes [this message]
2003-06-03 21:55           ` Jason Hickey
2003-06-03 22:42             ` Chris Hecker
2003-06-06 23:46             ` John Max Skaller

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=20030603093151.159e5b1f.ayerkes@on-demand-tech.com \
    --to=ayerkes@on-demand-tech.com \
    --cc=caml-list@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;
as well as URLs for NNTP newsgroup(s).