Je fais du benchmarking du coeur de la GED, et ouf, les résultats sont en adéquation avec mes prévisions. Je vous donne quelques chiffres, comme ça...

La fonction la plus sollicitée, qui est aussi la plus rapide (la vie est bien faite, non ?), est SessionImpl:getUserId et elle s'exécute en moyenne en seulement 0,239 millisecondes.

La fonction qui a le temps d'exécution record est SessionImpl:listUsersLogins, avec un maximum de 863,118 millisecondes. Et pourtant, cette fonction s'exécute aussi en un minimum de 0,249 millisecondes après. Pourquoi ? Cette fonction est tout simplement la première qui est appellée, et c'est donc elle qui déclenche la connexion à la base de données, qui déclenche la création de la base de données si elle n'existe pas. Moins de 0,8 secondes pour initialiser le système, ce n'est pas mal :-) En fait, j'utilise un schéma d'initialisation retardée, c'est à dire que la base de donnée n'est créée/connectée que quand on veut y accéder, le thread d'émission des emails de notification n'est lancé qu'à la première demande d'envoi de mail, etc etc. Ce schéma d'initialisation est excellent, et il evite les grosses fonctions d'init qui ont tendance à casser la pensée modulaire (je me comprends).

La fonction la plus lente en moyenne est en toute logique DocumentImpl:create (création d'un document) avec 352,450 millisecondes (tests avec des petits documents).

Globalement, c'est assez rapide, mais je dois continuer les tests avec des situations plus réelles.

Je compte intégrer définitivement le système de mesure des temps d'exécution dans le coeur de la GED, car les données qu'ils fournit seront capitales pour guider les évolutions futures. Je compte même ajouter une fonctionnalité d'envoi des résultats sur mon serveur (par un POST HTTP journalier), que je puisse aggréger ces informations et obtenir une vue synthétique.