I wonder if things have changed since 2007? (ie, why was this reposted?)
“The C++ and OCaml implementations of this ray tracer perform almost identically. However, note that the C++ implementation has been optimised by using pass by reference for structs. In contrast, the OCaml implementation is unoptimised.”