В релизе Delphi 10.4 заявлено об улучшениях в RTL, в том числе и при работе с JSON. В частности, сказано следующее «JSON reading optimization: TJSONReader is now 50% faster». TJSONReader относится к библиотеке «Readers and Writers JSON Framework» — второй библиотеке для работы с JSON в Delphi. А что с первой — с «JSON Objects Framework«? Решил проверить прирост производительности Delphi 10.4 при работе с JSON по сравнению с Delphi 10.3 Rio.
Что будем тестировать?
Тестировать будем ровно тоже самое, что и в статье про библиотеку JSON Objects Framework, а именно:
- Создание двух JSON-объектов: простого, содержащего пары строчных значений и «сложного» — json, содержащего массивы значений.
- Парсинг JSON с массивами значений и без них.
Код тестовых процедур можно посмотреть вот в этой статье про JSON в Delphi 10.3. В, теперь уже, предыдущей версии Delphi библиотека JSON Objects Framework показывала следующие результаты:
Минимум, мс | Максимум, мс | |
Создание простого JSON | 144 | 156 |
Создание JSON с массивами | 565 | 601 |
Чтение простого JSON | 225 | 232 |
Чтение JSON с массивами | 971 | 1021 |
Посмотрим, какие результаты покажет тот же самый код в Delphi 10.4 Sydney.
Производительность JSON Objects Framework в Delphi 10.4
Тот же самый код для тестирования JSON показал следующие результаты в Delphi 10.4
Минимум, мс | Максимум, мс | |
Создание простого JSON | 140 | 148 |
Создание JSON с массивами | 544 | 560 |
Чтение простого JSON | 230 | 232 |
Чтение JSON с массивами | 972 | 984 |
Итог
Пусть небольшой прирост (практически на уровне погрешности) в производительности JSON Objects Framework Delphi 10.4, но имеется. Как будет возможность — проверим производительность TJSONReader, возможно, что там рост будет выглядеть более впечатляюще.