[Caml-list] OCaml is broken

2009-12-19 Thread Erik Rigtorp
Hi!

I've been using Erlang and C++ to build a soft real-time system. As
the project has evolved we've needed to write more and more of the
code in C++ in order to achieve our latency requirements. But C++ is
not as performant as you might think until you start to write your own
allocators and cache aligning mallocs and datastructures. I've never
liked C++ so I decided to try OCaml and built a simple 100 line
program to build order books for Nasdaq. Turns out OCaml has really
competitive performance while being a really nice language.

However OCaml is broken! It does not provide any support for multicore
architectures, which by now is considered a bug! It doesn't even allow
me to load multiple runtimes into one C program.

Please fix OCaml! The first step would be to support multiple runtimes
running in the same process communicating using message queues.

Erik Rigtop

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] OCaml is broken

2009-12-19 Thread Stéphane Glondu
Erik Rigtorp a écrit :
 However OCaml is broken! It does not provide any support for multicore
 architectures, which by now is considered a bug! [...]

You might be interested by OCaml4Multicore:

  http://www.algo-prog.info/ocmc/web/

It's still experimental, but its authors would love to have feedback.


Best regards,

-- 
Stéphane

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


[Caml-list] Re: OCaml is broken

2009-12-19 Thread Sylvain Le Gall
On 19-12-2009, Erik Rigtorp e...@rigtorp.com wrote:

 Please fix OCaml! The first step would be to support multiple runtimes
 running in the same process communicating using message queues.


You should take a look at:
http://jocaml.inria.fr/

Regards,
Sylvain Le Gall

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


[Caml-list] Re: OCaml is broken

2009-12-19 Thread Jeff Shaw
My understanding is that since jocaml uses the regular ocaml runtime, it 
is also not multicore enabled.


Haskell is a functional language that has good performance that can use 
multiple processors, but the learning curve is steeper and higher.


OCaml is a close relative of Standard ML, so there might be some 
implementation of SML that you like. MLTon might allow multicore use, 
but I'm not sure how mature it is. SML/NJ has a library or language 
extension called Concurrent ML, but I think SML/NJ might not use 
multiple processors.


Note that if you're not using a lot of threads, you can use Unix.fork to 
do true multithreaded programming ocaml.


___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs


Re: [Caml-list] Re: OCaml is broken

2009-12-19 Thread Jon Harrop
On Saturday 19 December 2009 19:38:41 Jeff Shaw wrote:
 My understanding is that since jocaml uses the regular ocaml runtime, it
 is also not multicore enabled.

 Haskell is a functional language that has good performance

GHC and the Haskell language itself have serious performance problems.

 that can use multiple processors, but the learning curve is steeper and
 higher. 

And Haskell lacks many of the features OCaml programmers take for granted.

 OCaml is a close relative of Standard ML, so there might be some
 implementation of SML that you like. MLTon might allow multicore use,
 but I'm not sure how mature it is. SML/NJ has a library or language
 extension called Concurrent ML, but I think SML/NJ might not use
 multiple processors.

MLton and SML/NJ are both multicore incapable. The PolyML implementation of 
SML is multicore friendly but last time I looked (many years ago) it was 100x 
slower than OCaml for floating point.

As long as you're looking at OCaml's close relatives with multicore support, 
F# is your only viable option. Soon, HLVM will provide a cross-platform open 
source solution. If you look further you will also find Scala and Clojure.

 Note that if you're not using a lot of threads, you can use Unix.fork to 
 do true multithreaded programming ocaml.

We've discussed the problems with that before. Writing a parallel generic 
quicksort seems to be a good test of a decent multicore capable language 
implementation. Currently, F# is a *long* way ahead of everything open 
source.

-- 
Dr Jon Harrop, Flying Frog Consultancy Ltd.
http://www.ffconsultancy.com/?e

___
Caml-list mailing list. Subscription management:
http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list
Archives: http://caml.inria.fr
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners
Bug reports: http://caml.inria.fr/bin/caml-bugs