DéveloppeurWeb.Com
    DéveloppeurWeb.Com
    • Agile Zone
    • AI Zone
    • Cloud Zone
    • Database Zone
    • DevOps Zone
    • Integration Zone
    • Web Dev Zone
    DéveloppeurWeb.Com
    Home»Performance Zone»La bibliothèque JSON ultime : JSON.simple contre GSON contre Jackson contre JSONP
    Performance Zone

    La bibliothèque JSON ultime : JSON.simple contre GSON contre Jackson contre JSONP

    octobre 16, 2021
    La bibliothèque JSON ultime : JSON.simple contre GSON contre Jackson contre JSONP
    Share
    Facebook Twitter Pinterest Reddit WhatsApp Email

    JSON est la norme acceptée de nos jours pour la transmission de données entre les serveurs et les applications Web. Souvent, nous ne pensons pas aux bibliothèques JSON que nous utilisons, mais il existe des différences entre elles.

    JSON est souvent utilisé pour transporter et analyser de gros fichiers. Il s’agit d’un scénario courant dans les applications de traitement de données exécutées dans des clusters Hadoop ou Spark. Compte tenu de la taille de ces fichiers, vous pouvez constater des différences significatives de vitesse d’analyse entre les bibliothèques.

    De petits fichiers apparaissent tout le temps sous forme de requêtes entrantes à haut débit, et leur analyse est rapide, de sorte que les différences de performances peuvent ne pas sembler être un gros problème au début. Mais les différences s’additionnent, car vous devez souvent analyser de nombreux petits fichiers en succession rapide pendant les périodes de trafic intense. Les microservices et les architectures distribuées utilisent souvent JSON pour transporter ce type de fichiers, car c’est le format de facto des API Web.

    Toutes les bibliothèques JSON ne fonctionnent pas de la même manière. Choisir le bon pour votre environnement peut être critique. Nous avons effectué un test de référence pour voir à quelle vitesse quatre des bibliothèques JSON les plus populaires pour Java analysent différentes tailles de fichiers. Cette référence peut vous aider à décider.

    Les bibliothèques JSON

    JSON.simple contre GSON contre Jackson contre JSONP Pour les tests de référence, nous avons examiné quatre principales bibliothèques JSON pour Java : JSON.simple, GSON, Jackson et JSONP. Toutes ces bibliothèques sont couramment utilisées pour le traitement JSON dans un environnement Java et ont été choisies en fonction de leur popularité dans les projets Github. Voici ceux que nous avons testés :

    • JSON.simple de Yidong Fang : https://github.com/fangyidong/json-simpleJSON.simple est une boîte à outils Java pour l’encodage et le décodage du texte JSON. Il s’agit d’une bibliothèque légère et simple qui fonctionne toujours à un niveau élevé.
    • GSON de Google: https://github.com/google/gsonGSON est une bibliothèque Java qui convertit les objets Java en JSON et vice versa. Il offre l’avantage supplémentaire d’une prise en charge complète des génériques Java, et il ne vous oblige pas à annoter vos classes. Ne pas avoir besoin d’ajouter d’annotations simplifie la mise en œuvre et peut même être une exigence si vous n’avez pas accès à votre code source.
    • Le projet Jackson de FasterXML: https://github.com/FasterXML/jacksonJackson est un groupe d’outils de traitement de données mis en évidence par son analyseur JSON en streaming et sa bibliothèque génératrice. Conçu pour Java, il peut également gérer d’autres encodages non JSON. C’est l’analyseur JSON le plus populaire, selon nos conclusions sur les utilisations de Github.
    • JSONP d’Oracle: https://jsonp.java.net JSONP (JSON Processing) est une API Java pour le traitement JSON, notamment autour de la consommation et de la production de texte JSON en streaming. C’est l’implémentation de référence open source de JSR353.

    La référence : 2017

    Nous avons effectué un test de référence sur les bibliothèques pour les gros fichiers et les petits fichiers. Les exigences (et donc les performances) pour gérer différentes tailles de fichiers sont différentes, tout comme les environnements dans lesquels le besoin d’analyser ces fichiers se pose.

    Le test de référence a testé deux scénarios clés : la vitesse d’analyse pour les gros fichiers (190 Mo) et la vitesse d’analyse pour les petits fichiers (1 Ko). Les gros fichiers ont été extraits d’ici : https://github.com/zeMirco/sf-city-lots-json. Les petits fichiers ont été générés aléatoirement à partir d’ici : http://www.json-generator.com/.

    Pour les gros et les petits fichiers, nous avons exécuté chaque fichier 10 fois par bibliothèque. Compte tenu de la taille du gros fichier, nous avons effectué 10 itérations par exécution pour chaque bibliothèque. Chaque petit fichier a été itéré 10 000 fois par exécution pour chaque bibliothèque. Pour le test des petits fichiers, nous n’avons pas conservé les fichiers en mémoire entre les itérations et le test a été exécuté sur une instance c3.large sur AWS.

    Les résultats pour le gros fichier sont présentés dans leur intégralité ci-dessous, mais j’ai encore fait la moyenne des résultats pour les petits fichiers dans l’intérêt de l’espace. Pour voir les résultats étendus, allez ici. Si vous voulez voir le code source des petits fichiers ou des bibliothèques, allez ici.

    Résultats des gros fichiers : 2017

    De grosses différences ici ! Selon la course, Jackson ou JSON.simple ont échangé les temps les plus rapides, Jackson devançant JSON.simple dans l’ensemble. En regardant le résultat moyen sur tous les tests, Jackson et JSON.simple arrivent bien en tête sur le gros fichier, avec JSONP loin troisième et GSON loin à la dernière place.

    Mettons cela en termes de pourcentage. Jackson est le vainqueur en temps moyen sur toutes les courses. En regardant les chiffres sous deux angles différents, voici les résultats en pourcentage :


    Ce sont de grandes différences entre les vitesses de la bibliothèque !

    Emporter: C’était une photo finish, mais Jackson est votre bibliothèque gagnante. JSON.simple est un nez derrière et les deux autres sont dans le rétroviseur.

    Résultats des petits fichiers : 2017

    Le tableau ci-dessus montre la moyenne de 10 exécutions pour chaque fichier et la moyenne totale en bas. Le décompte de la bibliothèque la plus rapide sur le nombre de fichiers gagnés est :

    • GSON – 14
    • JSONP – 5
    • Jackson – 1
    • JSON.simple – 0

    En regardant le résultat moyen de toutes les exécutions de test sur tous les fichiers, GSON est le gagnant ici, avec JSON.simple et JSONP prenant respectivement une deuxième et une troisième place distinctes.

    Jackson est arrivé 2e avant-dernier. Ainsi, bien qu’il ne soit pas le plus rapide sur un seul fichier, JSON.simple est le deuxième plus rapide au total. Et bien qu’il soit le plus rapide sur une poignée de fichiers, JSONP est bien à la troisième place au total.

    Jackson est très cohérent sur tous les fichiers, tandis que les trois autres bibliothèques sont parfois beaucoup plus rapides que Jackson, mais sur certains fichiers finissent par s’exécuter à peu près à la même vitesse ou même légèrement plus lentement.

    Mettons les nombres en termes de pourcentage, en examinant à nouveau les nombres sous deux angles différents :

    Par rapport aux tests de gros fichiers, ce sont des différences plus petites, mais toujours assez perceptibles.

    Emporter: Pas de chance pour JSON.simple, car il perd à nouveau une course serrée, mais GSON est votre gagnant. JSONP est clairement troisième et Jackson ferme la marche.

    Bilan : 2017

    La vitesse d’analyse n’est pas la seule considération lors du choix d’une bibliothèque JSON, mais elle est importante. Lors de l’exécution de ce test de référence, nous avons constaté qu’il n’y avait pas de bibliothèque qui épate les autres en termes de vitesse d’analyse pour toutes les tailles de fichiers et toutes les exécutions. Les bibliothèques les plus performantes pour les gros fichiers ont souffert pour les petits fichiers et vice versa.

    Le choix de la bibliothèque à utiliser en fonction de la vitesse d’analyse dépend alors de votre environnement.

    • Si vous avez un environnement qui traite souvent ou principalement de gros fichiers JSON, alors Jackson est votre bibliothèque d’intérêt. GSON a le plus de difficultés avec les gros fichiers.
    • Si votre environnement traite principalement de nombreuses petites requêtes JSON, comme dans une configuration de microservices ou d’architecture distribuée, alors GSON est votre bibliothèque d’intérêt. Jackson a le plus de mal avec les petits fichiers.
    • Si vous devez souvent traiter les deux types de fichiers, JSON.simple est arrivé à une très près 2e place dans les deux tests, ce qui en fait un bon bourreau de travail pour un environnement variable. Ni Jackson ni GSON ne fonctionnent aussi bien sur plusieurs tailles de fichiers.

    En ce qui concerne la vitesse d’analyse, JSONP n’a pas grand-chose à recommander pour cela dans aucun scénario. Il fonctionne mal pour les gros et les petits fichiers par rapport aux autres options disponibles. Heureusement, Java 9 serait en train d’obtenir une implémentation JSON native, ce qui, on pourrait l’imaginer, constituera une amélioration par rapport à l’implémentation de référence.

    Si vous êtes préoccupé par la vitesse d’analyse de votre bibliothèque JSON, choisissez Jackson pour les gros fichiers, GSON pour les petits fichiers et JSON.simple pour gérer les deux.

    La référence : 2021

    Nous avons de nouveau exécuté les mêmes tests, mais nous utilisons maintenant les dernières bibliothèques et avons effectué les tests sur Java 11.

    Les chiffres sont assez différents de ceux que nous avons précédemment utilisés pour ces benchmarks. En général, les performances ont considérablement augmenté.

    Résultats des gros fichiers : 2021

    Derniers repères Jackson était le gagnant, mais cette fois GSON est de loin le plus rapide, avec JSONP étant une seconde près, puis suivi par Jackson puis JSON.simple dernier.

    Et encore une fois en regardant les chiffres sous deux angles différents, voici les résultats en pourcentage :

    GSON est clairement gagnant.

    Résultat des petits fichiers : 2021

    Dans le petit fichier Résultats Gson est toujours le gagnant. Battant clairement les 3 autres prétendants.

    Voici les résultats:

    1. Gson
    2. Jsonp
    3. Json.simple
    4. Jackson

    Gson traite ces fichiers plus rapidement de près de 200+ ms avant le prochain candidat.

    Bilan : 2021

    L’éléphant évident dans la pièce est que Java et les bibliothèques JSON sont devenues plus rapides. Comme bien plus rapide qu’à l’époque où les premiers benchmarks ont été exécutés.

    Il est également évident que GSON a pris de l’ampleur et a remporté les deux benchmarks pour les gros et les petits fichiers. Dans les deux cas très clairement.

    Share. Facebook Twitter Pinterest LinkedIn WhatsApp Reddit Email
    Add A Comment

    Leave A Reply Cancel Reply

    Catégories

    • Politique de cookies
    • Politique de confidentialité
    • CONTACT
    • Politique du DMCA
    • CONDITIONS D’UTILISATION
    • Avertissement
    © 2023 DéveloppeurWeb.Com.

    Type above and press Enter to search. Press Esc to cancel.