[Caml-list] OCaml is broken
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
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
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
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
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