Сравнение парсеров JSON.
Android SDK, Gson, Jackson.
Механизмы работы библиотек
● Считывание JSON
● DOM (Document object Model) or SAX (Simple API for XML)
● Формирование классов-мапперов:
○ Android SDK - написание парсера вручную , используя JSONObject и
JSONArray
○ Gson и Jackson - использование механизма Reflection
Условия:
● Устройство - Nexus 7 (2013 , 2 Gb Ram)
● Скорость - 14 JSON от 100 б до 10 Мб, 1000 итераций для каждого
● Память - 4 JSON от 5 кб до 5 Мб, 100 итерации для каждого
● Пример JSON :
{
"title": "Title",
"id": 1,
"items": [
{
"name": "name_0",
"id": 0
}
],
"subobject": {
"id": 1,
"subitems": [
{
"name": "name_0",
"id": 0
}
]
}
}
Gson.Результаты.Скорость
Size , bytes 100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760
Time, ms 8,5 9,1 9,8 15,2 22,6 85,0 159,0 380,1 761,8 1140,4 1560,0 3187,6 8298,4 18018,4
σ, ms 1,2 1,1 1,2 1,5 1,8 3,3 4,3 5,9 4,2 5,0 5,2 7,8 8,7 22,2
3σ/Time , % 41,5 36,8 37,2 28,8 24,0 11,6 8,2 4,6 1,6 1,3 1,0 0,7 0,3 0,4
Jackson.Результаты.Скорость
Size , bytes 100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760
Time, ms 133,7 134,4 134,8 140,4 146,4 205,6 277,1 496,8 853,9 1199,4 1574,4 3028,8 7524,5 15296,2
σ, ms 4,2 4,2 4,2 4,3 4,3 4,7 5,0 6,2 6,2 4,9 5,7 6,1 9,1 10,2
3σ/t , % 9,5 9,4 9,4 9,1 8,8 6,8 5,4 3,7 2,2 1,2 1,1 0,6 0,4 0,2
Android SDK.Результаты.Скорость
Size , bytes 100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760
Time, ms 0,3 1,1 1,8 8,0 15,6 77,9 160,0 416,4 891,0 1337,3 1847,4 3901,4 12456,1 29924,1
σ, ms 0,6 0,6 0,7 1,2 1,7 3,5 4,9 6,3 6,6 5,7 7,4 9,2 12,6 17,4
3σ/t , % 662,7 156,5 120,0 44,8 31,9 13,6 9,1 4,5 2,2 1,3 1,2 0,7 0,3 0,2
Сравнение
Использование памяти
Size , bytes 5120 51200 512000 5242880
Memory usage Native, bytes 107456 890905 6720267 62498840
Memory usage JACKSON , bytes 1649111 1818337 4885290 16920928
Memory usage GSON, bytes 166980 748693 6654454 22172398
Выводы по скорости :
● При парсинге малых JSON лучше использовать Android SDK
● При парсинге больших JSON лучший выбор Jackson
● Оптимальный выбор GSON
Спасибо за внимание !

Сравнение парсеров Json. Android SDK, Gson, Jackson

  • 1.
  • 2.
    Механизмы работы библиотек ●Считывание JSON ● DOM (Document object Model) or SAX (Simple API for XML) ● Формирование классов-мапперов: ○ Android SDK - написание парсера вручную , используя JSONObject и JSONArray ○ Gson и Jackson - использование механизма Reflection
  • 3.
    Условия: ● Устройство -Nexus 7 (2013 , 2 Gb Ram) ● Скорость - 14 JSON от 100 б до 10 Мб, 1000 итераций для каждого ● Память - 4 JSON от 5 кб до 5 Мб, 100 итерации для каждого ● Пример JSON : { "title": "Title", "id": 1, "items": [ { "name": "name_0", "id": 0 } ], "subobject": { "id": 1, "subitems": [ { "name": "name_0", "id": 0 } ] } }
  • 4.
    Gson.Результаты.Скорость Size , bytes100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760 Time, ms 8,5 9,1 9,8 15,2 22,6 85,0 159,0 380,1 761,8 1140,4 1560,0 3187,6 8298,4 18018,4 σ, ms 1,2 1,1 1,2 1,5 1,8 3,3 4,3 5,9 4,2 5,0 5,2 7,8 8,7 22,2 3σ/Time , % 41,5 36,8 37,2 28,8 24,0 11,6 8,2 4,6 1,6 1,3 1,0 0,7 0,3 0,4
  • 5.
    Jackson.Результаты.Скорость Size , bytes100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760 Time, ms 133,7 134,4 134,8 140,4 146,4 205,6 277,1 496,8 853,9 1199,4 1574,4 3028,8 7524,5 15296,2 σ, ms 4,2 4,2 4,2 4,3 4,3 4,7 5,0 6,2 6,2 4,9 5,7 6,1 9,1 10,2 3σ/t , % 9,5 9,4 9,4 9,1 8,8 6,8 5,4 3,7 2,2 1,2 1,1 0,6 0,4 0,2
  • 6.
    Android SDK.Результаты.Скорость Size ,bytes 100 500 1024 5120 10240 51200 102400 256000 512000 768000 1048576 2097152 5242880 10485760 Time, ms 0,3 1,1 1,8 8,0 15,6 77,9 160,0 416,4 891,0 1337,3 1847,4 3901,4 12456,1 29924,1 σ, ms 0,6 0,6 0,7 1,2 1,7 3,5 4,9 6,3 6,6 5,7 7,4 9,2 12,6 17,4 3σ/t , % 662,7 156,5 120,0 44,8 31,9 13,6 9,1 4,5 2,2 1,3 1,2 0,7 0,3 0,2
  • 7.
  • 8.
    Использование памяти Size ,bytes 5120 51200 512000 5242880 Memory usage Native, bytes 107456 890905 6720267 62498840 Memory usage JACKSON , bytes 1649111 1818337 4885290 16920928 Memory usage GSON, bytes 166980 748693 6654454 22172398
  • 9.
    Выводы по скорости: ● При парсинге малых JSON лучше использовать Android SDK ● При парсинге больших JSON лучший выбор Jackson ● Оптимальный выбор GSON
  • 10.