2017-05-03 1 views
1

Je veux écrire des tests de performance en utilisant jmh pour mesurer certaines parties du code de mon application. J'ai lu jmh samples sur la façon d'écrire des tests et regardé quelques conversations sur youtube à propos de jmh et des tests de performance. Ce que je ne comprends pas, c'est comment choisir les valeurs correctes pour les valeurs @Warmup, @Measurement et @Fork. Dans la plupart des échantillons, il y a 1 Fork, 10 itérations avec 1 seconde de durée. Je comprends, qu'il n'y a pas de solution miracle pour la configuration, mais quel devrait être mon processus de réflexion lors du choix des valeurs que je devrais mettre?Comment choisir les paramètres de configuration jmh

Répondre

1

Je ne sais pas si quelqu'un pourrait recommander des paramètres qui sont réellement aussi proches que vous pourriez avoir besoin - probablement même pas les gars qui ont écrit l'outil. C'est très spécifique au cas d'utilisation que vous testez, l'OS, la JVM, etc.

Personnellement, je fais le faire quelques fois avec des paramètres différents et capture le résultat à chaque fois pour que je puisse l'analyser. Vous avez quelques Error +/- (pour la moyenne d'au moins le temps) le champ qui est ma première indication. Si c'est trop grand (et c'est quelque chose que vous détermineriez), j'augmente habituellement les @Warmup et @Measurement; ce n'est pas une règle d'or, mais c'est ce que je fais. Voici un exemple que j'utilise:

@BenchmarkMode(Mode.AverageTime) 
@OutputTimeUnit(TimeUnit.NANOSECONDS) 
@Warmup(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) 
@Measurement(iterations = 5, time = 2, timeUnit = TimeUnit.SECONDS) 
@State(Scope.Thread) 

je pourrais augmenter la iterations et time peu à peu pour voir si je suis proche de résultats constants avec des pistes précédentes.

Je cours habituellement tous les benchmarks sous le même réchauffement, de sorte que les résultats ne sont pas biaisés sur cela. La chose à obtenir ici, c'est que vous pourriez obtenir de bons ou de mauvais résultats, ou lente et rapide - mais ce n'est que la sortie, pas la raison. Comprendre la raison et courir jmh sous perfasm ou xperfasm et beaucoup d'autres profileurs, est une cuisine complètement différente, loin de ma ligue ...