//+------------------------------------------------------------------+ //| BenJsonLib.mq5 | //| Copyright 2026, Niquel Mendoza. | //| https://www.mql5.com/ | //+------------------------------------------------------------------+ #property copyright "Copyright 2026, Niquel Mendoza." #property link "https://www.mql5.com/" #property version "1.00" #property strict #define JSONBENCH_RUN_PARSE //+------------------------------------------------------------------+ //| | //+------------------------------------------------------------------+ #include #include "Def.mqh" #define LIBNAME "MQL5-JsonLib" //+------------------------------------------------------------------+ //| Script program start function | //+------------------------------------------------------------------+ void OnStart() { //--- #ifdef JSONBENCH_RUN_PARSE MQL5_Json::JsonError error; MQL5_Json::JsonParseOptions opts; opts.engine = MQL5_Json::ENGINE_HIGH_SPEED; //--- MQL5_Json::Internal::CJsonRapidParser rapid_parser; rapid_parser.m_text = g_json_data; // one copy rapid_parser.m_text_len = StringLen(g_json_data); //--- Sleep(1000); //--- ulong a = GetMicrosecondCount(); for(int i = 0; i < 1000; i++) { rapid_parser.ParseToTapeFast(opts, error); MQL5_Json::Internal::CJsonDocument doc_impl; // o como corresponda instanciar MQL5_Json::Internal::CDomBuilder dom_builder; dom_builder.BuildFromTape(GetPointer(doc_impl), rapid_parser.m_tape, g_json_data); } ulong b = GetMicrosecondCount() - a; Print("@", b); #else // JSONBENCH_RUN_PARSE MQL5_Json::JsonError error; MQL5_Json::JsonParseOptions opts; MQL5_Json::JsonDocument doc = MQL5_Json::JsonParse(g_json_test_access, error, opts); MQL5_Json::JsonNode root = doc.GetRoot(); string keys[]; root.Get("wide_object").GetKeys(keys); const int n = ArraySize(keys); Xoshiro256 xo; xo.Seed(JSONBENCH_ACCESO_XHOR_SEED); double sump = 0.0, profit = 0.0; long tin = 0; ulong a = GetMicrosecondCount(); for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++) { const string key = keys[xo.RandomInteger(0, n)]; root.Get("wide_object")[key]; } ulong b = GetMicrosecondCount(); Sleep(100); JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_WIDE) a = GetMicrosecondCount(); for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++) { root.Get("deep_object").Get("l1").Get("l2").Get("l3").Get("l4").Get("l5") .Get("l6").Get("l7").Get("l8").Get("l9").Get("l10").Get("target").AsString(); } b = GetMicrosecondCount(); Sleep(100); JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_DEEP) a = GetMicrosecondCount(); for(int i = 0; i < JSONBENCH_TOTAL_ITER_ACCESO; i++) { const int index = xo.RandomInteger(0, 10000); tin += root.Get("large_array").At(index).AsInt(0); } b = GetMicrosecondCount(); Sleep(100); JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_LARGE_ARR) a = GetMicrosecondCount(); for(int k = 0; k < 500; k++) { sump += root.Get("array_of_objects").At(k).Get("price").AsDouble(0.0); profit += root.Get("array_of_objects").At(k).Get("profit").AsDouble(0.0); tin += root.Get("array_of_objects").At(k).Get("tags").Size(); } b = GetMicrosecondCount(); Sleep(100); JSONBENCH_ACCES_CALL(JSONBENCH_TAGOP_ACCESO_MIX) PrintFormat("sump=%.2f profit=%.2f tin=%d ", sump, profit, tin); JSONBENCH_FINISH #endif // JSONBENCH_RUN_PARSE } //+------------------------------------------------------------------+ /* 2026.08.28 09:26:20.971 BenJsonLib (EURUSD,H1) [acceso-wide] Time: 229 2026.08.28 09:26:21.083 BenJsonLib (EURUSD,H1) [acceso-deep] Time: 1114 2026.08.28 09:26:21.196 BenJsonLib (EURUSD,H1) [acceso-array-large] Time: 409 2026.08.28 09:26:21.308 BenJsonLib (EURUSD,H1) [acceso-mixed-trading] Time: 1141 2026.08.28 09:26:21.308 BenJsonLib (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578 2026.08.28 09:26:28.306 BenJsonLib (EURUSD,H1) [acceso-wide] Time: 230 2026.08.28 09:26:28.418 BenJsonLib (EURUSD,H1) [acceso-deep] Time: 1028 2026.08.28 09:26:28.527 BenJsonLib (EURUSD,H1) [acceso-array-large] Time: 434 2026.08.28 09:26:28.639 BenJsonLib (EURUSD,H1) [acceso-mixed-trading] Time: 1176 2026.08.28 09:26:28.639 BenJsonLib (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578 2026.08.28 09:26:33.302 BenJsonLib (EURUSD,H1) [acceso-wide] Time: 227 2026.08.28 09:26:33.414 BenJsonLib (EURUSD,H1) [acceso-deep] Time: 1022 2026.08.28 09:26:33.526 BenJsonLib (EURUSD,H1) [acceso-array-large] Time: 442 2026.08.28 09:26:33.636 BenJsonLib (EURUSD,H1) [acceso-mixed-trading] Time: 984 2026.08.28 09:26:33.636 BenJsonLib (EURUSD,H1) sump=537.48 profit=-337.50 tin=4925578 2026.08.28 09:34:19.945 BenJsonLib (EURUSD,H1) @2160719 2026.08.28 09:34:29.912 BenJsonLib (EURUSD,H1) @2118729 2026.08.28 09:36:20.789 BenJsonLib (EURUSD,H1) @12879 2026.08.28 09:37:24.614 BenJsonLib (EURUSD,H1) @17595195 2026.08.28 09:39:02.251 UtilHeader (EURUSD,H1) [MultiBen& - $[parse|twitter.json|MQL5-JsonLib|1000] 2026.08.28 09:39:28.038 BenJsonLib (EURUSD,H1) @17547384 2026.08.28 09:39:51.584 BenJsonLib (EURUSD,H1) @17760505 2026.08.28 09:40:04.740 UtilHeader (EURUSD,H1) [MultiBen& - %[MQL5-JsonLib] */