Version française
Home     About     Download     Resources     Contact us    
Browse thread
[Caml-list] O'Caml vs C++: a little benchmark
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Oleg <oleg_inconnu@m...>
Subject: [Caml-list] O'Caml vs C++: a little benchmark
Hi

I wrote a few simple benchmarks [1] assessing binaries generated by "ocamlopt 
-unsafe -noassert" vs binaries generated by "g++-3.2 -O2 -fomit-frame-pointer 
-pedantic" on P3 Xeon, and the results were quite surprising to me.

Firstly, I expected iteration over O'Caml lists and integer arrays to be as 
fast as iteration over std::list and std::vector<int>, respectively. Instead, 
the benchmark gave me a speed difference of about 10x and 100x in favor of 
C++ for lists and arrays, respectively.

Secondly, a little benchmark comparing mutable binary trees of 64 bit floats 
also showed g++-3.2 to be about an order of magnitude faster.

What was even more surprising was that O'Caml turned out to be about 10 times 
faster than C++ for reversing lines in a file. I did not use explicit buffers 
of any kind in either version, and in C++ program, I used "getline", reading 
into std::string which should provide about the same level of abstraction and 
overflow protection as O'Caml string.

I'm curious as to where these huge differences for these small programs come 
from.

Thanks
Oleg

[1] http://www.columbia.edu/~ot14/ocaml_vs_cpp/
Sample output while running ./demo_all_root.sh on P3 Xeon 800 MHz w/ 256 Mb 
RAM:

lists
1.323
0.904 (* std::deque *)
16.330
arrays
0.258    <- C++ 
16.930   <- ocamlopt 
rev
0.063
0.009
memory
0.728
1.606
tree
1.338
12.307
-------------------
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