Question

J'ai écrit simplement outil de test de charge pour tester les performances des modules Java. Un problème que je pose est l'algorithme de débit des mesures. Les tests sont exécutés dans plusieurs fil (configure client comment test beaucoup de temps doit être répété), et le temps d'exécution est consigné. Ainsi, lorsque les tests sont terminés, nous avons l'histoire suivante:

4 test executions
2 threads
36ms overall time

- idle
* test execution
       5ms    9ms     4ms      13ms
T1  |-*****-*********-****-*************-|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-----|
    <-----------------36ms--------------->

Pour calculer I moment débit (par seconde) de façon suivante:. 1000 / overallTime * threadCount

Mais il y a un problème. Que faire si un fil complètera ses propres tests plus rapidement (pour une raison quelconque):

      3ms 3ms 3ms 3ms
T1  |-***-***-***-***----------------|
      3ms  6ms     7ms      11ms
T2  |-***-******-*******-***********-|
    <--------------32ms-------------->

Dans ce cas, le débit réel est beaucoup mieux en raison du débit mesuré est délimitée par  le plus lent fil . Alors, ma question est de savoir comment dois-je mesurer le débit d'exécution de code dans un environnement multithread.

Était-ce utile?

La solution

Que diriez-vous throughput[t] = numberOfTests[t] / overallTime[t] séparément pour chaque t de fil, puis calculer la moyenne de tous throughput?

Ensuite, vous pouvez également calculer des choses comme plage et écart-type pour obtenir une meilleure image. Personnellement, je l'aime beaucoup parcelles boîte . Mais seulement les chiffres eux-mêmes serait intéressant.

Autres conseils

Je sais que son bit une fin, mais j'ai deux postes de blog associés à votre question. Le premier décrit comment mesurer le débit (et Temps de réponse). Le deuxième décrit un moyen de débit graphique .

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top