Calculer le nombre de messages par seconde dans une fenêtre mobile?

J'ai des messages venant dans mon programme avec milliseconde (n'importe où à partir de zéro à quelques centaines de messages d'une milliseconde).

J'aimerais en faire une analyse. Plus précisément, je veux conserver plusieurs rouler les fenêtres du nombre de messages, mis à jour que les messages arrivent. Par exemple,

  • nombre de messages dans la dernière seconde
  • nombre de messages dans la dernière minute
  • nombre de messages dans la dernière demie-heure divisé par nombre de messages dans la dernière heure

Je ne peux pas simplement de maintenir un décompte simple comme "1,017 messages dans la dernière seconde"car je ne sais pas quand un message est vieux de plus de 1 seconde et, par conséquent, ne devrait plus être dans le comte...

J'ai pensé à maintenir une file d'attente de tous les messages, à la recherche pour le dernier message datant de plus d'une seconde, et déduire le comte de l'index. Cependant, il semble que ce serait trop lent, et mange beaucoup de mémoire.

Que puis-je faire pour garder une trace de ces comptages dans mon programme pour que je puisse efficacement ces valeurs en temps réel?

source d'informationauteur Rudiger