Erlang环形基准测试 (练习)

本文基于《Erlang程序设计》一书,介绍了一次环形基准测试的练习。通过自行编写的Erlang程序,展示了测试过程,并附有运行截图,讨论了在特定电脑配置下的测试结果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在看《Erlang程序设计》这本书,学习中...

有个环形基准测试的练习,自己写的程序,如下

-module(looptest).
-export([start/3]).

%% PC : process count
%% MC : message count
%% Msg: message sent in the ring
start(PC, MC, Msg)
	when is_integer(PC), is_integer(MC), PC >= 2, MC >= 1 ->
	PidMaster = self(),
	PidFirst = spawn(fun() -> firstLoop(MC, PidMaster) end),
	PidLast = generate(PidFirst, MC, PC - 1),
	statistics(runtime),
	statistics(wall_clock),
	PidFirst ! {start, PidLast, Msg},
	receive
		stopped ->
			{_, T0} = statistics(runtime),
			{_, T1} = statistics(wall_clock),
			{runtime, T0, wall_clock, T1}
	end.

generate(PidFirst, _MC, 0) ->
	PidFirst;
	
generate(PidFirst, MC, PC) ->
	PidNext = spawn(fun() -> loop(PidFirst, MC) end),
	generate(PidNext, MC, PC - 1).


firstLoop(Counter, PidMaster) ->
	receive
		{start, PidNext, Msg} ->
			PidNext ! Msg,
			loop(PidNext, Counter),
			PidMaster ! stopped
	end.


loop(_PidNext, 0) ->
	void;
	
loop(PidNext, Counter) ->
	receive
		Any ->
			%% io:format("~p Received:~p~n", [self(), Any]),
			PidNext ! Any,
			loop(PidNext, Counter - 1)
	end.

运行截图:


电脑配置:


发送消息1M次用时约1.7秒。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值