验证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).