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