Un article qui devrait intéresser les développeurs Java / Kotlin. Une petite astuce, qui permet rapidement, pour ceux qui utilisent massivement Jackson, de gagner en performance et de consommer un peu moins de mémoire et de CPU
Jackson Afterburner ou comment gagner un peu de performance
Jackson pour sérialiser (transformer un objet en un format de données, du json par exemple ou bien XML pour les nostalgiques), désérialiser des données (transformer un format de données en un “objet”), utilise ce que l’on appelle de la “reflection”. Cette utilisation est quelque peu couteuse et peut faire baisser un peu les performances tout en augmentant les temps de réponse (c’est pas non plus du simple au double … )
L’idée, qui est derrière, en activant ce module, est que vous pouvez simplement faire quelques petites économies et sur un volume conséquent de requêtes, cela commence à compter (les petits ruisseaux font les grandes rivières comme on dit …). En tout cas, cela ne doit pas devenir l’axe principal d’optimisation de votre applicatif.
En quoi ça consiste ?
Au lieu de faire plusieurs fois la même opération en reflection, Jackson va générer dynamiquement du code Java compilé (appelé bytecode), ce qui lui permet d’être plus rapide sur certaines opérations.
Comment je l’active ?
Comme tout module Jackson, il faut simplement ajouter, pour ceux qui utilisent Maven, dans leur pom.xml, cette entrée :
<dependency> <groupId>com.fasterxml.jackson.module</groupId> <artifactId>jackson-module-afterburner</artifactId> <version>2.12.2</version> </dependency>
Il faut adapter la version à votre version de Jackson.
Si vous n’utilisez pas l’autodécouverte de Jackson, n’oubliez pas de le rajouter à la configuration de votre ObjectMapper, comme ceci :
ObjectMapper mapper = JsonMapper.builder() .addModule(new AfterburnerModule()) .build();
Cela ne fera pas de miracle mais cela aidera, à gagner un peu de temps CPU sur un nombre conséquents de requêtes et de micro-services.
Happy Coding !