验证:record项元的多少影响修改速度。

验证erlang官网提供的思想:record的修改是复制。

 

-module (test_record).
-record (record_5,{ aa1 = 0,
					aa2 = 0,
					aa3 = 0,
					aa4 = 0,
					aa5 = 0}).

-record(record_50,{	aa1 = 0,
					aa2 = 0,
					aa3 = 0,
					aa4 = 0,
					aa5 = 0,
					aa6 = 0,
					aa7 = 0,
					aa8 = 0,
					aa9 = 0,
					aa10 = 0,
					aa11 = 0,
					aa12 = 0,
					aa13 = 0,
					aa14 = 0,
					aa15 = 0,
					aa16 = 0,
					aa17 = 0,
					aa18 = 0,
					aa19 = 0,
					aa20 = 0,
					aa21 = 0,
					aa22 = 0,
					aa23 = 0,
					aa24 = 0,
					aa25 = 0,
					aa26 = 0,
					aa27 = 0,
					aa28 = 0,
					aa29 = 0,
					aa30 = 0,
					aa31 = 0,
					aa32 = 0,
					aa33 = 0,
					aa34 = 0,
					aa35 = 0,
					aa36 = 0,
					aa37 = 0,
					aa38 = 0,
					aa39 = 0,
					aa40 = 0,
					aa41 = 0,
					aa42 = 0,
					aa43 = 0,
					aa44 = 0,
					aa45 = 0,
					aa46 = 0,
					aa47 = 0,
					aa48 = 0,
					aa49 = 0,
					aa50 = 0	}).

-export ([test_5/1,test_5/2,test_50/1,test_50/2]).




test_5(Amount)->
		Record_5 = #record_5{},
		%% Fun = fun(Amount2,Record_5_2)-> test_5(Amount2 ,Record_5_2) end,
		%% {Time_ms,_Value} = timer:tc(Fun,[Amount,Record_5]),
		{Time_ms,_Value} = timer:tc(test_record,test_5,[Amount,Record_5]),
		Time_s = Time_ms div 1000,
		io:format("test_5 cost time:~w ms~n",[Time_s]).

test_5(0,_Record_5)->
		ok;
test_5(Amount,Record_5)->
		_New_Record_5 = Record_5#record_5{aa2 = 2},
		test_5(Amount - 1,Record_5).



test_50(Amount)->
		Record_50 = #record_50{},
		{Time_ms,_Value} = timer:tc(test_record,test_50,[Amount,Record_50]),
		Time_s = Time_ms div 1000,
		io:format("test_50 cost time:~w ms~n",[Time_s]).

test_50(0,_Record_50)->
		ok;
test_50(Amount,Record_50)->
		_New_Record_50 = Record_50#record_50{aa20 = 2},%% aa2 和 aa2 的速度同样。
		test_50(Amount - 1,Record_50).

 

 

 

posted @ 2014-05-07 16:29  宁静的天空  阅读(243)  评论(0编辑  收藏  举报