Pour la sérialisation d’un objet Java, je souhaite tester la différence entre l’utilisation de JSON et l’utilisation d’outils de sérialisation généraux en termes de performance temporelle et spatiale.
JSON choisit d’utiliser fastjson.
L’outil de sérialisation utilise Protostuff et Kyro. Pourquoi ne pas utiliser le protobuf ? Parce que je trouve que pour une classe Java avec des centaines de propriétés existantes, créer un nouveau fichier proto correspondant est un peu anti-humain. Protostuff est une version améliorée de Protobuf, qui permet de sérialiser directement un objet Java, en l’utilisant un peu comme Kyro, sans autant de processus intermédiaires que Protobuf. D’autres, comme Hession, Java avec sérialisation, etc., sont dites avoir des performances bien inférieures à celles de Kryo et Protobuf, donc je ne sais pas à quoi m’attendre.
Après un simple test, j’ai constaté que l’écart était assez évident, donc je n’ai pas ressenti la nécessité de faire une évaluation spécifique. Coupez un paragraphe du journal et envoyez-le, tout le monde le ressent.
le temps de coût est System.nanoTime() ; Les trois sont les configurations par défaut sans aucune configuration. L’empreinte d’espace après sérialisation est légèrement inférieure à celle du protostuff, et les deux sont bien plus élevés que JSON. C’est facile à comprendre, après tout, les chaînes json sont lisibles, il ne faut pas forcer trop. Le temps nécessaire pour la sérialisation et la désérialisation est meilleur que pour Kyro via FastJSON, et la différence est assez évidente.
En conclusion, s’il n’y a pas d’exigences extrêmement exigeantes pour l’espace, Protostuff pourrait être le meilleur choix. Protostuff a un avantage supplémentaire par rapport à Kyro, à savoir que si la classe Java ajoute des champs après la sérialisation et avant la désérialisation (ce qui est inévitable dans la vraie entreprise), Kyro sera inutile. Cependant, le protostuff peut être utilisé tant qu’il est ajouté à la fin du cours et utilise la série Sun JDK. Ainsi, si la sérialisation est utilisée dans des scénarios comme le cache, et que l’objet sérialisé doit être stocké longtemps, vous ne pouvez choisir que le protostuff.
Bien sûr, s’il y a besoin de lisibilité ou autre, vous ne pouvez utiliser que json.
|