[erlang-questions] Erlang concurreny on Windows

William H Pyritz <>
Wed Apr 9 20:09:23 CEST 2008


Hello,

I hope you can help me understand some results from an Erlnag
concurrency test I recently performed. I am using a dual core Intel
T2500 CPU @ 2GHz with 1G RAM running Windows XP Pro.

erl -version:
	Erlang (ASYNC_THREADS) (BEAM) emulator version 5.5.5

I was watching the CPU monitor and noticed that one core was at nearly
100% and the other at ~80% for both of the following tests. I expected
to see a significant difference in the times (marked as OUTPUT below).

Is there something I am doing wrong that might explain the reults, or is
Windows doing some optimizations on the first test?

Thanks,

Bill Pyritz
-------------------------------------------------------------
test_concurrency1() ->
    statistics(runtime),
    statistics(wall_clock),
    for( 1, 100000000, fun(Index) -> Index * 10 end ),
    {_, Time1} = statistics(runtime),
    {_, Time2} = statistics(wall_clock),
    io:format("~p ~p ~n", [Time1, Time2]).
OUTPUT => 15781 15797

test_concurrency2() ->
    statistics(runtime),
    statistics(wall_clock),
    S = self(),
    spawn( fun() -> for( 1, 50000000, fun(Index) -> Index * 10 end ), S
! done end ),
    spawn( fun() -> for( 1, 50000000, fun(Index) -> Index * 10 end ), S
! done end ),
    for( 1, 2, fun(_) -> receive done -> done end end ),
    {_, Time3} = statistics(runtime),
    {_, Time4} = statistics(wall_clock),
    io:format("~p ~p ~n", [Time3, Time4]).
OUTPUT => 15531 15531






More information about the erlang-questions mailing list