02 février 2008

commons-monitoring - 2ème


A quoi sert System.nanoTime() en Java ? Qui a VRAIMENT besoin d'une précision en nanosecondes ?

Premier élément de réponse, System.nanoTime() ne fournit pas un compteur en ns, mais le meilleur compteur disponible sur le système. La précision réellement obtenue est donc ... indéterminée.

C'est d'ailleurs également le cas de System.currentTimeMillis(), qui sous Windows repose sur un compteurs standard de l'OS, ce qui permet à cette méthode d'être extrèmement rapide ... au prix d'une imprécision de 10 à 15ms ! Ennuyeux pour évaluer le temps de traitement des méthodes Java, qui sont régulièrement de l'ordre de quelques ms...

Sur le même Windows, System.nanoTime() est environ 100x plus lent, mais fournit une précisionde l'ordre de la microseconde (selon le hardware, la version Windows, le service pack et la conf système !) .

En résumé, System.nanoTime() fournit ce qu'il y a de plus précis sur le système hôte, et System.currentTimeMillis() un timestamp qui peut parfois être imprécis de 15ms.

"Write once, run anywhere" qu'ils disaient ! Si vous cherchez un compteur en secondes ça devrait aller. Pour faire plus fin, ... ça dépend. Donc dans le doute, on prend les nanosecondes et on ajoute un joli warning dans la doc :

"la précision des mesures peut varier de 1 à 10.000.000"

29 janvier 2008

commons-monitoring

Après une première expérience sur http://www.jmonit.org/, je reprend "from scratch" ma tentative de créer un toolkit de monitoring qui soit à la fois aussi simple que JamonAPI, aussi élégant que Moskito et aussi bien supporté que commons.apache.org.


Voici donc l'acte de naissance de commons-monitoring, largement inspiré de jMonit avec quelques ajustements. Et pour partir sur de bonnes bases, il sera utilisé sur un projet actuellement en production et qui nécessite de l'outillage pour justifier quelques soucis de fiabilité. De quoi être tout de suite confronté au "monde réel" et à ses exigences, plutôt que de batir un bel ensemble théorique pas vraiment utile.
Toute suggestion / remarque / contribution est évidement la bienvenue, ce qui est l'objectif de la démarche commons.apache.org "community-driven".