-module(tester).
|
|
-include("common.hrl").
|
|
|
|
-export([
|
|
test_online_num/1,
|
|
test_scene_sign/0,
|
|
test_lists_and_proplists/0,
|
|
test_lists_and_proplists/3
|
|
]).
|
|
|
|
%% Apis ------------------------------
|
|
test_online_num(Repeat) ->
|
|
F1 = fun(_) -> lib_world_boss:online_num() end,
|
|
F2 = fun(_) -> lib_world_boss:online_num2() end,
|
|
Tester = [
|
|
{"lib_world_boss:online_num", F1},
|
|
{"lib_world_boss:online_num2", F2}
|
|
],
|
|
test:time_compare(Repeat, Tester).
|
|
|
|
test_lists_and_proplists() ->
|
|
test_lists_and_proplists(10000, 10, 50).
|
|
|
|
test_lists_and_proplists(Repeat, ListSize, FindSize) ->
|
|
{ToFindKeys, MaterialList} = gen_list_material(ListSize, FindSize),
|
|
F1 = fun(_) -> [lists:keyfind(K, 1, MaterialList) || K <- ToFindKeys] end,
|
|
F2 = fun(_) -> [proplists:get_value(K, MaterialList) || K <- ToFindKeys] end,
|
|
Tester = [
|
|
{"lists:keyfind/3", F1},
|
|
{"proplists:get_value/2", F2}
|
|
],
|
|
test:time_compare(Repeat, Tester).
|
|
|
|
%% @doc 测试地图区域
|
|
test_scene_sign() ->
|
|
case conf_scene_list:get_id_list() of
|
|
SceneList when SceneList =/= [] ->
|
|
SceneID = util:list_rand(SceneList),
|
|
test_scene_sign(10000, SceneID, 100);
|
|
_ ->
|
|
ignore
|
|
end.
|
|
|
|
test_scene_sign(Repeat, SceneID, FindSize) ->
|
|
{MaxX, MaxY} = lib_scene_sign:get_max_xy(SceneID),
|
|
PosList = [{util:rand(1, MaxX), util:rand(1, MaxY)} || _ <- lists:seq(1, FindSize)],
|
|
%% 从s3取svr_scene_sign模块,并将svr_scene_sign:load_sign/1改为call
|
|
svr_scene_sign:ensure_scene_sign(SceneID),
|
|
F1 = fun(_) ->
|
|
[svr_scene_sign:get_scene_poses({SceneID, X, Y}) || {X, Y} <- PosList]
|
|
end,
|
|
Ets = conf_scene:get_ets(SceneID),
|
|
F2 = fun(_) ->
|
|
[lib_scene_sign:is_pos_blocked(Ets, {SceneID, X, Y}) || {X, Y} <- PosList]
|
|
end,
|
|
F3 = fun(_) ->
|
|
[lib_scene_sign:is_pos_blocked({SceneID, X, Y}) || {X, Y} <- PosList]
|
|
end,
|
|
Tester = [
|
|
{"scene_sign+gen_server", F1},
|
|
{"scene_sign+ets", F2},
|
|
{"scene_sign+ets", F3}
|
|
],
|
|
test:time_compare(Repeat, Tester).
|
|
|
|
|
|
%% Privates --------------------------
|
|
|
|
gen_list_material(ListSize, FindSize) ->
|
|
Keys = [list_to_atom(lists:concat([k, I])) || I <- lists:seq(1, ListSize)],
|
|
Values = [list_to_atom(lists:concat([v, I])) || I <- lists:seq(1, ListSize)],
|
|
List = lists:zip(Keys, Values),
|
|
ToFind = util:gen_n(FindSize, Keys),
|
|
{ToFind, List}.
|