X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;ds=sidebyside;f=003%2Fsrc%2Flife.erl;h=f4b1fe56cd2a6a9a1c415e4aa64f2f21c77a9d9c;hb=704cefa6bfd9bab26938b62c14b47f4803e0cd64;hp=5f91d2681430aecd29ccc47b50f14eb1224dc9bd;hpb=160a4566dcc36d03f6af95e7c588cc7453fdd905;p=cellular-automata.git diff --git a/003/src/life.erl b/003/src/life.erl index 5f91d26..f4b1fe5 100644 --- a/003/src/life.erl +++ b/003/src/life.erl @@ -7,7 +7,7 @@ -define(CHAR_ALIVE, 111). % "o" -define(CHAR_BAR, 45). % "-" --define(INTERVAL, 100). +-define(GEN_INTERVAL, 100). -record(state, {x :: non_neg_integer() @@ -73,7 +73,10 @@ life_loop( ,print_time = PrintTime }, - timer:sleep(?INTERVAL), + NewTimeMil = NewTime / 1000, + NextGenDelay = round(?GEN_INTERVAL - NewTimeMil), + timer:sleep(NextGenDelay), + life_loop(NewState). @@ -94,6 +97,9 @@ do_print_status(Bar, X, Y, N, GenCount, TimeMic, PrintTimeMic) -> do_print_board(Board) -> + % It seems that just doing a fold should be faster than map + to_list + % combo, but, after measuring several times, map + to_list has been + % consistently (nearly twice) faster than either foldl or foldr. RowStrings = array:to_list( array:map( fun(_, Row) ->