Caml Weekly News
[Posted January 7, 2003 by cook]
| 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.