Je lis à propos de l'analyse comparative avec JMH et envisage maintenant the example of asymmetric.Comprendre asymétrique dans jmh
Ils ont seulement dit ceci:
Jusqu'à présent, tous les tests sont symétriques: le même code a été exécuté dans tous les fils. Parfois, vous avez besoin du test asymétrique.
À quels "temps" exactement j'ai besoin d'un tel benchmarking symétrique. Je ne comprends aucun cas d'utilisation pratique de cette installation. Ils fournissent le suivant:
private AtomicInteger counter;
@Setup
public void up() {
counter = new AtomicInteger();
}
@Benchmark
@Group("g")
@GroupThreads(3)
public int inc() {
return counter.incrementAndGet();
}
@Benchmark
@Group("g")
@GroupThreads(1)
public int get() {
return counter.get();
}
Mais pouvez-vous me donner un cas d'utilisation réel de cela? Je veux dire, quel genre de choses pourrais-je vouloir mesurer asymétriquement?
Par ex scénarios typiques producteur-consommateur ou lecteur-scénariste. – apangin
Vous en avez besoin lorsque le test n'est significatif que lorsqu'une autre action est exécutée comme dans la vraie vie, vous ne ferez pas une seule action à plusieurs reprises. par exemple. l'ajout à une file deviendra plus lent à mesure qu'il se remplit, mais en réalité, la file d'attente peut être généralement vide. –
@PeterLawrey Je ne comprends pas très bien votre exemple avec les files d'attente. Donc, en fait, nous voulons que plusieurs threads mesurent l'impact du changement de contexte sur la performance, c'est ce que vous vouliez dire? Mais quant aux files d'attente de Java, elles ne sont pas bloquantes ... alors que voulons-nous atteindre par un tel benchmark? –