|
|
Subscribe / Log in / New account

Caml Weekly News

From:  Alan Schmitt <alan.schmitt@polytechnique.org>
To:  lwn@lwn.net
Subject:  Attn: Development Editor, Latest Caml Weekly News
Date:  Tue, 7 Jan 2003 10:32:07 -0500

Hello,

Here is the latest Caml Weekly News, week 31 December 2002 to 07
January, 2003.

1) Coyote Gulch test in Caml
2) Native labltk for Mac OS X

======================================================================
1) Coyote Gulch test in Caml
----------------------------------------------------------------------
Some benchmark was discussed on the list (thread starting at
http://caml.inria.fr/archives/200301/threads.html).

Someone asked and Xavier Leroy said:

> Is it normal that my ocaml program is only 2 times faster than the java 
> counterpart ?(using the same method and complied into native. jdk is 1.4.1

You know, many compiler researchers would kill their whole families to
get speedups by a factor of 2 :-)

James Gosling gave a talk at INRIA recently where he repeated the
party line that JDK 1.4 runs as fast, or even faster, than C++.
So, by transitivity, you're implying that OCaml is twice as fast as C++.
Yippee! 

More seriously: Java is nowhere as fast as a good C++ compiler (see
e.g. http://www.coyotegulch.com/reviews/almabench.html for an
independent, cross-language benchmark in numerical computing),
but it's not that slow either.  A factor of 2 slower than ocamlopt
sounds broadly reasonable, especially if the program doesn't stress
the GC too much.  Bagley's shootout (http://www.bagley.org/~doug/shootout/)
seems to suggest a larger factor (JDK 1.3 slightly slower than OCaml
bytecode), but his figures may be lowered by Java's slow start-up times.

Then Chet Murthy asked and Shawn Wagner announced:

> If anybody's ported this to Caml, I'd love to get a copy.

http://raevnos.pennmush.org/code/almabench-ocaml.tar.gz

It's pretty much a straight translation of the C++ version, and not very
impressive speed-wise on my system compared to the C++ one.

To which Xavier Leroy answered:

Thanks a lot for the OCaml translation.  As you say, the speed of the
OCaml version is about 50% of that of the C++ version, both on Athlon
with g++, and on Alpha with the Tru64 cxx compiler.  This is both
reassuring and disappointing:

Reassuring, because our blanket performance statement "OCaml
delivers at least 50% of the performance of a decent C compiler" is
not invalidated :-)

Disappointing, because the assembly code generated by ocamlopt isn't
too ugly despite the code not being very Caml-ish in style.  In  
particular, (almost) all float and ref boxing is correctly eliminated.
Given this, I was expecting maybe 75% of the performances of C++, not
50%.  Simple hand optimization (CSE, loop unrolling) doesn't affect
the speed significantly.  Apparently, the ocamlopt-generated code
offers less instruction-level parallelism than the g++-generated code
for the float computations.  Still, I haven't really understood where
the factor of 2 comes from.

======================================================================
2) Native labltk for Mac OS X
----------------------------------------------------------------------
Ken Wakita announced:
(the patches mentioned in the message are available at
http://caml.inria.fr/archives/200301/msg00029.html)

Today I found some time to install Tcl/Tk for Aqua, which is the native user
interface for Macintosh OS X and configured ocaml-3.06 so that its labltk
links with the Tcl/Tk for Aqua.

labltk, ocamlbrowser, and accompanying examples (hello, eyes, tetris, ...)
under otherlibs/labltk/examples_labltk compiles with little problem.

With a small effort you could make a clickable native application for Mac OS
X.

Though behavior of some applications is weird (some, for instance
ocamlbrowser, are very weird) but I can tolerate.

The following is an outline of installation steps (Mac OS 10.2.2 and higher
is expected):

0. Visit "www.tcl.tk" and get TclTkAqua_8.4.1-Jaguar.dmg, and install it.

After installation make four symbolic links as show followingly (you need to
be a super user):

/Library/Frameworks/Tcl.framework:

lr-xr-xr-x  1 root  staff   11 Jan  7 18:58 libtcl -> libtcl8.4.a
lr-xr-xr-x  1 root  staff   16 Jan  7 18:58 libtcl8.4.a -> Versions/8.4/Tcl   

/Library/Frameworks/Tk.framework:

lr-xr-xr-x  1 root  staff   10 Jan  7 18:58 libTk -> libTk8.4.a
lr-xr-xr-x  1 root  staff   15 Jan  7 18:58 libTk8.4.a -> Versions/8.4/Tk

1. Extract ocaml-3.06.tgz and apply the attached patch (tcltk4aqua.patch)

cd ocaml-3.06; patch -p1 tcltk4aqua.patch

2. Execute the configuration script

sh ocaml4darwin.conf

This script configures ocaml-3.06 for Mac OS X and for the Tcl/Tk just
installed.  It also builds "world, opt, and opt.opt".

 You might want to save the existing ocaml-3.06 installation.  In that case,
modify the script appropriately.

3. Install the ocaml-3.06 system

make install

4. Store makeapp.sh and Info.plist at the labltk's examples directory and
build clickable applications.

4.1 store makeapp.sh and Info.plist in "otherlibs/labltk/examples_labltk"
directory.

4.2 build examples

cd otherlibs/labltk/examples_labltk
make

4.3 build clickable applications

./makeapp hello
./makeapp tetris
...

4.4 locate the Finder application to the examples_labltk directory and start
the clickable applications.

Good luck

======================================================================
Old cwn
----------------------------------------------------------------------

If you happen to miss a cwn, you can send me a message
(alan.schmitt@inria.fr) and I'll mail it to you, or go take a look at
the archive (http://pauillac.inria.fr/~aschmitt/cwn/). If you also wish
to receive it every week by mail, just tell me so.

======================================================================

Alan Schmitt

-- 
The hacker: someone who figured things out and made something cool happen.



to post comments


Copyright © 2003, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds