|
|
@ -50,7 +50,8 @@ runExe(Num, Ds) -> |
|
|
|
storeStatistics(Ds, Num, Insert, Read, Delete), |
|
|
|
{_, DsName} = lists:split(2, atom_to_list(Ds)), |
|
|
|
printLog("~-10.s ~8.s ~12.s ~12.s ~10.s ~12.s ~12.s ~12.s ~n", |
|
|
|
[DsName, integer_to_list(Num), timeToStr(Insert), calcPer(Insert, Num), timeToStr(Read), calcPer(Read, Num), timeToStr(Delete), calcPer(Delete, Num)]); |
|
|
|
[DsName, integer_to_list(Num), timeToStr(Insert), calcPer(Insert, Num), timeToStr(Read), calcPer(Read, Num), timeToStr(Delete), calcPer(Delete, Num)]); |
|
|
|
|
|
|
|
{'EXIT', Pid, normal} -> |
|
|
|
ok; |
|
|
|
_ShutDown -> |
|
|
@ -67,8 +68,12 @@ runAvg([], _VNumList) -> |
|
|
|
runCal([Num | T], Ds) -> |
|
|
|
#tempCnt{insert = InsertList, read = ReadList, delete = DeleteList} = getStatistics(Ds, Num), |
|
|
|
{_, DsName} = lists:split(2, atom_to_list(Ds)), |
|
|
|
printLog("~-10.s ~8.s ~12.s ~12.s ~12.s~n", |
|
|
|
[DsName, integer_to_list(Num), calcAvg(InsertList, Num), calcAvg(ReadList, Num), calcAvg(DeleteList, Num)]), |
|
|
|
AvgI = calcAvg(InsertList, Num), |
|
|
|
AvgR = calcAvg(ReadList, Num), |
|
|
|
AvgD = calcAvg(DeleteList, Num), |
|
|
|
AvgAll = calcAvgAll(InsertList, ReadList, DeleteList, Num), |
|
|
|
printLog("~-10.s ~8.s ~12.s ~12.s ~12.s ~12.s~n", |
|
|
|
[DsName, integer_to_list(Num), AvgI, AvgR, AvgD, AvgAll]), |
|
|
|
runCal(T, Ds); |
|
|
|
runCal([], _Ds) -> |
|
|
|
ok. |
|
|
@ -82,12 +87,12 @@ timeToStr(not_support) -> |
|
|
|
<<"noSupport">>; |
|
|
|
timeToStr(skip) -> |
|
|
|
<<"skip">>; |
|
|
|
timeToStr(Time) when Time > ?S -> |
|
|
|
float_to_list(Time / ?S, [{decimals, 2}]) ++ "s"; |
|
|
|
timeToStr(Time) when Time > ?MS -> |
|
|
|
float_to_list(Time / ?MS, [{decimals, 2}]) ++ "ms"; |
|
|
|
timeToStr(Time) when Time > ?US -> |
|
|
|
float_to_list(Time / ?US, [{decimals, 2}]) ++ "us"; |
|
|
|
% timeToStr(Time) when Time > ?S -> |
|
|
|
% float_to_list(Time / ?S, [{decimals, 2}]) ++ "s"; |
|
|
|
% timeToStr(Time) when Time > ?MS -> |
|
|
|
% float_to_list(Time / ?MS, [{decimals, 2}]) ++ "ms"; |
|
|
|
% timeToStr(Time) when Time > ?US -> |
|
|
|
% float_to_list(Time / ?US, [{decimals, 2}]) ++ "us"; |
|
|
|
timeToStr(Time) -> |
|
|
|
integer_to_list(Time) ++ "ns". |
|
|
|
|
|
|
@ -107,7 +112,18 @@ calcAvg(CntList, Num) -> |
|
|
|
AvgCnt = ?Cnt - 2, |
|
|
|
SortList = lists:sort(CntList), |
|
|
|
AvgList = lists:sublist(SortList, 2, AvgCnt), |
|
|
|
float_to_list(lists:sum(AvgList) / AvgCnt / Num, [{decimals, 2}]) ++ "ns". |
|
|
|
float_to_list(lists:sum(AvgList) / AvgCnt, [{decimals, 2}]) ++ "ns". |
|
|
|
|
|
|
|
calcAvgAll(InsertList, ReadList, DeleteList, Num) -> |
|
|
|
%% 去掉最大值与最小值 然后求平均值 |
|
|
|
AvgCnt = ?Cnt - 2, |
|
|
|
SortList1 = lists:sort(InsertList), |
|
|
|
AvgList1 = lists:sublist(SortList1, 2, AvgCnt), |
|
|
|
SortList2 = lists:sort(ReadList), |
|
|
|
AvgList2 = lists:sublist(SortList2, 2, AvgCnt), |
|
|
|
SortList3 = lists:sort(DeleteList), |
|
|
|
AvgList3 = lists:sublist(SortList3, 2, AvgCnt), |
|
|
|
float_to_list((lists:sum(AvgList1) + lists:sum(AvgList2) + lists:sum(AvgList3)) / AvgCnt, [{decimals, 2}]) ++ "ns". |
|
|
|
|
|
|
|
storeStatistics(Ds, Num, Insert, Read, Delete) -> |
|
|
|
#tempCnt{insert = InsertList, read = ReadList, delete = DeleteList} = |
|
|
@ -125,13 +141,12 @@ getStatistics(Ds, Num) -> |
|
|
|
|
|
|
|
printTitle() -> |
|
|
|
printLog("~n~-10.s ~8.s ~12.s ~12.s ~10.s ~12.s ~12.s ~12.s ~n", |
|
|
|
["TsName", "V_Num", "insert", "insert/per", "read", "read/per", "delete", "delete/per"]), |
|
|
|
printLog("~s ~n", [[$= || _ <- lists:seq(1, 145)]]). |
|
|
|
["DsName", "V_Num", "insert", "insert/per", "read", "read/per", "delete", "delete/per"]), |
|
|
|
printLog("~s ~n", [[$= || _ <- lists:seq(1, 80)]]). |
|
|
|
|
|
|
|
printAvg() -> |
|
|
|
printLog("~n~-10.s ~8.s ~12.s ~12.s ~12.s~n", |
|
|
|
["DsName", "V_Num", "insert/per", "read/per", "delete/per"]), |
|
|
|
printLog("~s ~n", [[$= || _ <- lists:seq(1, 85)]]). |
|
|
|
printLog("~n~-10.s ~8.s ~12.s ~12.s ~12.s ~12.s~n", ["DsName", "V_Num", "insert/per", "read/per", "delete/per", "totalUse"]), |
|
|
|
printLog("~s ~n", [[$= || _ <- lists:seq(1, 64)]]). |
|
|
|
|
|
|
|
printLog(Format, Args) -> |
|
|
|
% {ok, File} = file:open("src/docs/erlang-DsBenchMark.txt", [write, append]), |
|
|
|