%% %% %CopyrightBegin% %% %% Copyright Ericsson AB 2001-2012. All Rights Reserved. %% %% The contents of this file are subject to the Erlang Public License, %% Version 1.1, (the "License"); you may not use this file except in %% compliance with the License. You should have received a copy of the %% Erlang Public License along with this software. If not, it can be %% retrieved online at http://www.erlang.org/. %% %% Software distributed under the License is distributed on an "AS IS" %% basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See %% the License for the specific language governing rights and limitations %% under the License. %% %% %CopyrightEnd% %% %% -module(testTimer). -export([go/0]). -include_lib("test_server/include/test_server.hrl"). -define(times, 5000). val() -> {'H323-UserInformation',{'H323-UU-PDU', {callProceeding, {'CallProceeding-UUIE', {0,8,222}, {'EndpointType', {'NonStandardParameter', {object,{0,9,237}}, <<"O">>}, {'VendorIdentifier', {'H221NonStandard',62,63,16282}, <<"OC">>, <<"OC">>}, {'GatekeeperInfo', {'NonStandardParameter', {object,{0,10,260}}, <<"O">>}}, {'GatewayInfo', [{h320, {'H320Caps', {'NonStandardParameter', {object,{0,11,282}}, <<"O">>}, [{'DataRate', {'NonStandardParameter', {object, {0,11,295}}, <<"O">>}, 1290470518, 78}], [{'SupportedPrefix', {'NonStandardParameter', {object, {0,12,312}}, <<"O">>}, {'h323-ID',"BM"}}]}}], {'NonStandardParameter', {object,{0,13,326}}, <<"O">>}}, {'McuInfo', {'NonStandardParameter', {object,{1,13,340,340}}, <<"OC">>}}, {'TerminalInfo', {'NonStandardParameter', {object,{1,14,353,354}}, <<"OC">>}}, true, true}, {ipxAddress, {'TransportAddress_ipxAddress', <<"OCTET ">>, <<"OCTE">>, <<"OC">>}}, {'CallIdentifier',<<"OCTET STRINGOCTE">>}, {noSecurity,'NULL'}, [{'ClearToken', 1667517741, "BM", {'DHset',<<1:1>>,<<1:1>>,<<1:1>>}, <<"OCTET STR">>, -26430296, {'TypedCertificate', {1,16,405,406}, <<"OC">>}, "BMP", {'NonStandardParameter', {1,16,414,415}, <<"OC">>}}, {'ClearToken', 1817656756, "BMP", {'DHset',<<1:1>>,<<1:1>>,<<1:1>>}, <<"OCTET STRI">>, -16356110, {'TypedCertificate', {1,17,442,443}, <<"OC">>}, "BMP", {'NonStandardParameter', {1,18,452,452}, <<"OC">>}}], [{cryptoGKPwdEncr, {'CryptoH323Token_cryptoGKPwdEncr', {1,18,467,467}, {'Params',-7477016,<<"OCTET ST">>}, <<"OC">>}}, {cryptoGKPwdEncr, {'CryptoH323Token_cryptoGKPwdEncr', {1,19,486,486}, {'Params',-2404513,<<"OCTET ST">>}, <<>>}}], []}}, {'NonStandardParameter',{object,{0,3,84}},<<>>}, [], true, [], []}, {'H323-UserInformation_user-data',24,<<"O">>}}. go() -> Module = 'H323-MESSAGES', Type = 'H323-UserInformation', Value = val(), Bytes = Module:encode(Type, Value), Value = Module:decode(Type, Bytes), {ValWr,done} = timer:tc(fun() -> encode(?times, Module, Type, Value) end), io:format("ASN.1 encoding: ~p micro~n", [ValWr / ?times]), done = decode(2, Module, Type, Bytes), {ValRead,done} = timer:tc(fun() -> decode(?times, Module, Type, Bytes) end), io:format("ASN.1 decoding: ~p micro~n", [ValRead /?times]), Comment = "encode: "++integer_to_list(round(ValWr/?times)) ++ " micro, decode: "++integer_to_list(round(ValRead /?times)) ++ " micro. [" ++ atom_to_list(Module:encoding_rule()) ++ "]", {comment,Comment}. encode(0, _Module,_Type,_Value) -> done; encode(N, Module,Type,Value) -> Module:encode(Type, Value), encode(N-1, Module, Type, Value). decode(0, _Module, _Type, _Value) -> done; decode(N, Module, Type, Value) -> Module:decode(Type, Value), decode(N-1, Module, Type, Value).