-module(spawn_test). -export([set_up/3, tear_down/1, test_main/1, interpret_results/3]). print(silent, _Format,_Params) ->ok; print(_,Format,Params)-> io:format(Format, Params). set_up(Verbosity, SleepAsAtom, RepeatsAsAtom) -> Repeats = tools:atom_to_number(RepeatsAsAtom), Sleep = tools:atom_to_number(SleepAsAtom), print(Verbosity, "================ Setup test: Sleep ~p millisec, Repeats ~p times~n", [Sleep, Repeats]), {Verbosity, Sleep, Repeats}. tear_down({Verbosity,_Sleep,_Repeats}) -> print(Verbosity, "================ DONE ~n", []). spawn_procs(_Sleep, 0, ProcList)-> ProcList; spawn_procs(Sleep, RepeatsLeft, ProcList) -> P = spawn(fun() -> ok end), case Sleep of 0 -> ok; Sleep -> timer:sleep(Sleep) end, spawn_procs(Sleep, RepeatsLeft-1, [P | ProcList]). test_main({_Verbosity, Sleep, Repeats}) -> spawn_procs(Sleep, Repeats, []). interpret_results({Verbosity, _Sleep,_Repeats}, Results, Microseconds)-> ProcessNumber = length(Results), print(Verbosity, "Processes: ~p, Time elapsed: ~p microsec, Time/process: ~p microsec~n", [ProcessNumber, Microseconds, Microseconds/ProcessNumber]).