caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Pierre Weis <pierre.weis@inria.fr>
To: alex@baretta.com (Alessandro Baretta)
Cc: jl@itu.dk, caml-list@inria.fr
Subject: Re: [Caml-list] Even at compile time 2*2=4!
Date: Wed, 20 Nov 2002 01:31:19 +0100 (MET)	[thread overview]
Message-ID: <200211200031.BAA03544@pauillac.inria.fr> (raw)
In-Reply-To: <3DDA1C68.5070909@baretta.com> from Alessandro Baretta at "Nov 19, 102 12:11:36 pm"

> Jakob Lichtenberg wrote:
> 
> > 
> > I wish to package/compile my 'fourLib' so that I can avoid doing the
> > complicated calculation '2*2' each and every time I load 'fourLib'.  (I am
> > sure that you can imagine an even more requiring computational task than
> > evaluating '2*2'.)
> 
> I wish to suggest one possibility.
> 
> 1) You write a module defining the type of the datastructure 
> you wish to precompute and load
> 2) You write a program importing the above module, which 
> computes the datastructure and marshals it to a file. You 
> run this program.
> 3) You write a library which, upon being loaded, searches 
> the filesystem for the appropriate file, unmarshals it and 
> binds the precomputed data to an identifier.
> 4) You write your programs referring to the the identifier 
> exported by #3.
[...]
> Cheers,
> Alex

I clearly see what you want to do, this is as old as functional
programming (remember the old LISP eval-when-compile form).

As far as I know people want that feature because they think (well in
fact, they say they KNOW for sure) that this will speed up their
programs. This is unclear to me.

I remember to have read the source code of a CAS, entirely written in
Lisp, that started by computing a lot of constants with a huge number
of decimals (including $\pi$ and $e$). So, I said "he guys, you could
easily speed up your stuff by just defining the pre-calculated
constants instead of computing them from scratch again and again at
each start of your program!"

They politely thanked me for the suggestion, but they had to let me
know that they knew from time measurements that this ``presumably
enhanced'' method was much slower than re-computation: building the
constants directly in memory via computation was much faster than any
way they had found to get them stored into the memory at the beginning
of the program. Effectively, at launch time the constants have to be
read from files and this is really slow !

(The constants written at compile time in the executable are stored to
disk anyway and have to be read back when launching the program: in
the case of the CAS program, loading those huge constants with the
executable was slower than loading a small executable that re-computed
them from scratch!)

Life is not that simple...

Pierre Weis

INRIA, Projet Cristal, Pierre.Weis@inria.fr, http://pauillac.inria.fr/~weis/


-------------------
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


  reply	other threads:[~2002-11-20  0:35 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-11-19  3:18 Jakob Lichtenberg
2002-11-19 11:11 ` Alessandro Baretta
2002-11-20  0:31   ` Pierre Weis [this message]
2002-11-20  8:42     ` Alessandro Baretta
2002-11-19 11:12 ` Daniel de Rauglaudre
2002-11-19 18:09   ` David Brown

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=200211200031.BAA03544@pauillac.inria.fr \
    --to=pierre.weis@inria.fr \
    --cc=alex@baretta.com \
    --cc=caml-list@inria.fr \
    --cc=jl@itu.dk \
    /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).