Seren

2,298 views

Published on

Support de la présentation de Seren, librairie de sérialisation Java, à la conférence DevoxxFR.

Présentation par Olivier Croisier (zenika.com, thecodersbreakfast.net)

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
2,298
On SlideShare
0
From Embeds
0
Number of Embeds
922
Actions
Shares
0
Downloads
13
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Seren

  1. 1. SEREN  Sérialisation& magie noire 1
  2. 2. SPEAKEROlivier CroisierJava SpecialistConsultant @ Zenika@OlivierCroisier"The Coders Breakfast"http://thecodersbreakfast.net 2
  3. 3. SEREN ?• La sérialisation est utilisée partout• Efficace et robuste• Mais elle peut être améliorée !• … Automatiquement ? 3
  4. 4. SEREN ?• SEREN : Serialization Enhancer• Agent Java• Bytecode engineering• Améliore vos POJO ! 4
  5. 5. • Se branche sur le mécanisme TECH standard de sérialisation• Génère des méthodes optimisées writeObject & readObject writeReplace writeObject 10010101 01010101 01010100 10010101 01011001 01010100 readResolve readObject 5
  6. 6. TECH• Sérialiser un Objet est coûteux• Ecrire seulement les données utiles• Wrappers numériques & Strings 6
  7. 7. TECH• Wrappers numériques - booléen pour gérer "null" - valeur primitive• Strings - booléen pour gérer "null" - caractères UTF8 7
  8. 8. TECH• Quelles classes ?• ClassFilters - PackageList - PackagePattern - ClassPattern - Annotation - Custom ! 8
  9. 9. TECH• Quels champs ?• Non-transient Non static• Champs "final" - Reflexion ? - Unsafe ? - Assignation directe 9
  10. 10. • Classpath USAGE - javassist.jar - seren.properties• Option de JVM -javaagent:seren.jar• Votre code Aucune modification ! 10
  11. 11. Seren.properties USAGE// Seren configurationseren.filter=byPackageListseren.verbose=true// Filter definitionfilter.byPackageList=seren.filter.PackageListFilterfilter.byPackageList.packages=com.company.project.model 11
  12. 12. • Graphe dobjets PERFS• Champs• Optimisations existantes• Destination du flux 12
  13. 13. 500 PERFS450400 String, fixe350 Java : 380 ms300250200 Seren : 425 ms15010050 Boost : x 0.9 0 13
  14. 14. 1000 PERFS900800 String, aléatoire700 Java : 920 ms600500400 Seren : 510 ms300200100 Boost : x 1.8 0 14
  15. 15. 500 PERFS450400 Integer < 128350 Java : 400 ms300250200 Seren : 345 ms15010050 Boost : x 1.15 0 15
  16. 16. 1000 PERFS900800 Integer >= 128700 Java : 880 ms600500400 Seren : 350 ms300200100 Boost : x 2.5 0 16
  17. 17. POJO30002500 - Long id PERFS - String firstName2000 - String lastName15001000 Java : 2090 ms Seren : 690 ms500 0 Boost : x 3 17
  18. 18. 3000 POJO - Long id2500 - String firstName PERFS2000 - String lastName - Date birthDate15001000 Java : 2930 ms500 Seren : 1220 ms 0 Boost : x 2.4 18
  19. 19. 6000050000 PERFS40000 thrift-protobuf-compare30000 .googlecode.com20000 Boost : x 1.04 – 1.0910000 0 19
  20. 20. • Code http://github.com/oliviercroisier/seren• Licence & MORE... 3-Clause BSD Licence• Merci à - Heinz Kabutz - Thomas Darimont - Thomas Segismont 20

×