-module(user_default). -include("agHttpCli.hrl"). -compile([export_all, nowarn_export_all]). start() -> erlSync:run(), application:ensure_all_started(erlArango), agHttpCli:startPool(tt, [{poolSize, 10}], []). tt(C, N) -> application:ensure_all_started(erlArango), agHttpCli:startPool(tt, [{poolSize, 16}], []), StartTime = erlang:system_time(millisecond), io:format("IMY********************** started~n"), [spawn(?MODULE, test, [N, StartTime]) || _Idx <- lists:seq(1, C)]. %%test(N, Request). %% /_api/database test(0, StartTime) -> agMiscFuns:curDbTime(tt), io:format("IMY******test over use time ~pms~n", [erlang:system_time(millisecond) - StartTime]); test(N, StartTime) -> agMiscFuns:curDbTime(tt), test(N - 1, StartTime). %% tt(C, N) -> %% application:start(erlArango), %% agHttpCli:startPool(tt, [{poolSize, 1}, {baseUrl, <<"http://localhost:8181">>}], []), %% Request = {<<"GET">>, <<"/_api/database/current">>, [], []}, %% io:format("IMY********************** start time ~p~n",[erlang:system_time(millisecond)]), %% [spawn(test, test, [N, Request]) || _Idx <- lists:seq(1, C)]. %% %%test(N, Request). %% %% %% /_api/database %% %% test(0, Request) -> %% R1 = {<<"POST">>, <<"/echo_body">>, [], []}, %% agHttpCli:callAgency(tt, {<<"GET">>, <<"/ibrowse_stream_once_chunk_pipeline_test">>, [], []}, infinity), %% agHttpCli:callAgency(tt, {<<"POST">>, <<"/echo_body">>, [], []}, infinity), %% io:format("IMY********************** test over ~p~n",[erlang:system_time(millisecond)]); %% test(N, Request) -> %% erlang:put(cnt, N), %% agHttpCli:callAgency(tt, Request, 5000), %% test(N - 1, Request). -define(HeadBin, <<"X-Content-Type-Options: nosniff\r\nEtag: \"_aKwJ_tm--E\"\r\nServer: ArangoDB\r\nConnection: Keep-Alive\r\nContent-Type: application/json; charset=utf-8\r\nContent-Length: 178">>). th1(0, Fun, Rn) -> ?MODULE:Fun(?HeadBin, Rn); th1(N, Fun, Rn) -> ?MODULE:Fun(?HeadBin, Rn), th1(N - 1, Fun, Rn). th2(0, Fun, Cl, Rn) -> ?MODULE:Fun(?HeadBin, Cl, Rn); th2(N, Fun, Cl, Rn) -> ?MODULE:Fun(?HeadBin, Cl, Rn), th2(N - 1, Fun, Cl, Rn). head1(Headers, Rn) -> HeadersList = binary:split(Headers, Rn, [global]), contentLength(HeadersList). head2(Headers, _Rn) -> HeadersList = binary:split(Headers, <<"\r\n">>, [global]), contentLength(HeadersList). head3(Headers, CL, Rn) -> case binary:split(Headers, CL) of [_, Rest1] -> case binary:split(Rest1, Rn) of [InBin, _Rest2] -> binary_to_integer(InBin); [InBin] -> binary_to_integer(InBin) end; _ -> 0 end. %% binary:compile_pattern(<<"\r\n">>) %% binary:compile_pattern(<<"Content-Length: ">>) head4(Headers, _CL, _Rn) -> case binary:split(Headers, <<"Content-Length: ">>) of [_, Rest1] -> case binary:split(Rest1, <<"\r\n">>) of [InBin, _Rest2] -> binary_to_integer(InBin); [InBin] -> binary_to_integer(InBin) end; _ -> 0 end. contentLength([]) -> undefined; contentLength([<<"Content-Length: ", Rest/binary>> | _T]) -> binary_to_integer(Rest); contentLength([<<"content-length: ", Rest/binary>> | _T]) -> binary_to_integer(Rest); contentLength([<<"Transfer-Encoding: chunked">> | _T]) -> chunked; contentLength([<<"transfer-encoding: chunked">> | _T]) -> chunked; contentLength([_ | T]) -> contentLength(T). %% 测试 jiffy 与 jsx 编码解码性能 tcjf(0, _Args1) -> Args = #{name => ffd, tet => "fdsff", <<"dfdf">> => 131245435346}, jiffy:encode(Args); tcjf(N, Args1) -> Args = #{name => ffd, tet => "fdsff", <<"dfdf">> => 131245435346}, jiffy:encode(Args), tcjf(N - 1, Args1). tcjx(0, _Args1) -> Args = {[{name, ffd}, {tet, "fdsff"}, {<<"dfdf">>, 131245435346}]}, jiffy:encode(Args); tcjx(N, Args1) -> Args = {[{name, ffd}, {tet, "fdsff"}, {<<"dfdf">>, 131245435346}]}, jiffy:encode(Args), tcjx(N - 1, Args1). -define(BodyBin1, <<"{\"_key\":\"01J\",\"_id\":\"airports/01J\",\"_rev\":\"_aKwJ_tm--E\",\"name\":\"Hilliard Airpark\",\"city\":\"Hilliard\",\"state\":\"FL\",\"country\":\"USA\",\"lat\":30.6880125,\"long\":-81.90594389,\"vip\":false}">>). -define(BodyBin2, <<"{\"_key\":\"01J\",\"_id\":\"airports/01J\",\"_rev\":\"_aPaBl7O--_\",\"name\":\"Hilliard Airpark\",\"city\":\"Hilliardfdfsdfdsffffffffffffffffffffffffffffffffffffffffffffffffffffffffafdsfasdfdafsdafdsfsdafdsafdsfdsfdsafdsfdsfdsfhghfghfghgfhsdsdfdsfdsfdsffdfddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddggggggggggggggggggggggggggggggggggggggggg\",\"state\":\"FL\",\"country\":\"USAjjkjkjkfgjkgjfkdjgldgjldjglfdjglfjdljljrlejtrltjewltjrelwtjrletjrletrletjlrejtjtrlwjrejwlrjjreljtljelwjrtlwjtreljrlewjrlwjrlwejrlejltkdfsafd\",\"lat\":30.6880125,\"long\":-81.90594389,\"vip\":false}">>). jd1(0, Fun) -> ?MODULE:Fun(?BodyBin1); jd1(N, Fun) -> ?MODULE:Fun(?BodyBin1), jd1(N - 1, Fun). jd2(0, Fun) -> ?MODULE:Fun(?BodyBin2); jd2(N, Fun) -> ?MODULE:Fun(?BodyBin2), jd2(N - 1, Fun). decodeJy1(Bin) -> jiffy:decode(Bin, [return_maps]). decodeJy2(Bin) -> jiffy:decode(Bin, [return_maps, copy_strings]). decodeJx1(Bin) -> jsx:decode(Bin, [return_maps]). decodeJx2(Bin) -> jsx:decode(Bin, []).