下面的示例代碼是從喬·阿姆斯特朗的編程二郎書:二郎使用()VS列表:的foreach
max(N) ->
Max = erlang:system_info(process_list),
io:format("Maximum allowed processes:~p~n",[Max]),
statistics(runtime),
statistics(wall_clock),
L = for(1, N, fun() -> spawn(fun() -> wait() end) end),
{_, Time1} = statistics(runtime),
{_, Time2} = statistics(wall_clock),
lists:foreach(fun(Pid) -> Pid ! die end, L),
U1 = Time1 * 1000/N,
U2 = Time2 * 1000/N,
io:format("Process spawn time=~p (~p) microseconds~n",
[U1, U2]).
我的問題是處理二郎基本面。它看起來像喬使用for()
來產生進程,然後lists:foreach
去死。是否有理由相互使用一個?爲什麼不再使用for()來迭代產生的進程列表並向它們發送一個死信息?我錯過了哪裏有效率優化?
此外,'for/3'不存在於語言中,因此您必須自己實現它。使其成爲一個有爭議的問題。 –