jocaml

Jun 05, 2007 22:28

сегодня на rsdn.ru был анонс JoCaml - join calculus поверх ocaml.
я немного поигрался с jocaml - понравилось очень! одно удовольствие было читать jocaml'вские доки и переписывать erlang'вские примеры. забавно было видеть, как mpi реализуется буквально в две строчки.
и еще - как сказали на том же rsdn - потоки в jocaml "тяжелые".
вот пример того же самого, что на форуме rsdn писали на хаскелле и эрланге:

let create_countdown n =
def count(n) & tick() = count(n-1)
or count(0) & wait() = reply to wait in
spawn count(n) ;
tick,wait ;;

let nthreads, nticks = 333333,3 ;;

(* jocamlopt *)
(* 10000, 100 = 1sec *)
(* 100000, 10 = 8sec *)
(* 333333, 3 = 28sec, эрланг здесь был ровно в 10 раз быстрей*)
(* 1000000, 1 = 83sec, и здесь*)

let do_tick times = let var = ref 0 in
for i=1 to times do
var := !var + 1
done;;

let tick, stop = create_countdown nthreads;;

print_string "start=";;
print_float (Unix.time());;
print_string "\n";;

for i=1 to nthreads do
spawn begin
do_tick(nticks);
tick();
end;
done;;
stop();;

print_string "end=";;
print_float (Unix.time());
print_string "\n";

ocaml, erlang, ||

Previous post Next post
Up