Что ж, руки дойдут, сделаю сравнительный бенчмарк.
Сравнил скорость работы 4 библиотек, включая ToyJson3 из MQL5Book. Как образец json взял ответ Binance на "exchangeInfo" размером 768 Кб. Он при чтении библиотекой из строки парсится целиком, затем я выбираю один символ и считываю все его данные. В цикле 100 раз.
MetaTrader 5 x64 build 5370 started for MetaQuotes Ltd. Windows 10 build 19045, 4 x AMD Ryzen 3 PRO 3200GE w/ Radeon Vega, AVX2, 6 / 13 Gb memory, 241 / 427 Gb disk, UAC, GMT+3 cpu='AVX2 + FMA3'
Результат (время обработки запроса):
99.5 ms - JAson 1.12 (https://www.mql5.com/ru/code/13663)
85.5 ms - JAson 1.13
46.9 ms - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)
41 ms - JSON (https://www.mql5.com/ru/code/53107)
1132 ms - JsonNode (данная библиотека)
38 ms - моя реализация на основе JSON
PS: Когда-то здесь, кажется, всплывала ещё одна, очень урезанная, библиотека. Но я потерял следы.
PPS: Скрипт для замера не публикую. Код в совершенно неприглядном виде.
Я сравнил скорость работы 4 библиотек, включая ToyJson3 из MQL5Book. В качестве образца json я взял ответ Binance на запрос "exchangeInfo" размером 768 Кб. Когда библиотека считывает его из строки, он разбирается целиком, затем я выбираю один символ и считываю все его данные. В цикле 100 раз.
Результат (время обработки запроса):
99,5 мс - JAson 1.12(https://www.mql5.com/ru/code/13663)
85,5 мс - JAson 1.13
46,9 мс - ToyJson3 (https://www.mql5.com/ru/forum/459079/page4#comment_57805801)
41 мс - JSON(https://www.mql5.com/ru/code/53107)
1132 мс - JsonNode (эта библиотека)
38 мс - моя реализация на основе JSON
PS: Когда-то здесь всплывала другая, очень урезанная, библиотека. Но я потерял ее из виду.
PPS: Я не публикую скрипт для измерения. Код находится в совершенно неприглядном виде.
Не могли бы вы выложить json-строку или файл, пожалуйста?
https://fapi.binance.com/fapi/v1/exchangeInfo
https://eapi.binance.com/eapi/v1/exchangeInfo
778 КБ (796 729 байт)
Не могли бы вы выложить json-строку или файл, пожалуйста?
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Опубликована статья Осваиваем JSON: Разработка пользовательского JSON-ридера с нуля на MQL5:
В этой статье мы постараемся восполнить этот пробел, показав, как создать собственный JSON-ридер на языке MQL5. По ходу дела мы изучим основные концепции анализа JSON и рассмотрим создание гибкой структуры классов, способной обрабатывать различные типы элементов JSON (такие как объекты, массивы, строки, числа, логические значения и значения NULL). Наша конечная цель — предоставить возможность удобно анализировать строки JSON и получать доступ к данным в них или изменять их, и все это в удобной среде MetaTrader 5.
Мы будем следовать структуре, похожей на ту, что мы видели в других статьях, связанных с MQL5, но с упором именно на анализ и использование JSON. Статья будет разделена на пять основных разделов: введение (то, что вы читаете сейчас), более глубокое погружение в основы JSON и его применение в MQL5, пошаговое руководство по созданию базового парсера JSON с нуля, исследование расширенных функций обработки JSON и, наконец, полный листинг кода и заключительные мысли.
Автор: Sahil Bagdi