Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

178
Views
JMH Múltiples puntos de referencia Resultados diferentes en ejecuciones aisladas

Ejecuto algunos puntos de referencia a través de JMH

Supongamos que tengo tres puntos de referencia enumerados en un archivo Java

 @Benchmark @Threads(value = 2) @Warmup(iterations = 10) @Fork(value = 2) @Measurement(iterations = 10) public String benchmarkA() { ... } @Benchmark @Threads(value = 2) @Warmup(iterations = 10) @Fork(value = 2) @Measurement(iterations = 10) public String benchmarkB() { ... } @Benchmark @Threads(value = 2) @Warmup(iterations = 10) @Fork(value = 2) @Measurement(iterations = 10) public String benchmarkC() { ... }

Cada método compara un algoritmo diferente que tiene el mismo propósito. Cuando ejecuto todos los puntos de referencia juntos, los resultados varían en comparación con ejecutar los puntos de referencia uno por uno.

Por ejemplo, ejecute una ejecución JMH con solo un punto de referencia en el archivo Java.

 @Benchmark @Threads(value = 2) @Warmup(iterations = 10) @Fork(value = 2) @Measurement(iterations = 10) public String benchmarkA() { ... }

Los resultados de este método serían mejores si solo se ejecuta este método; sin embargo, en el caso de más puntos de referencia, los resultados serían peores.

Suponiendo que el resultado sea el punto de referencia A> punto de referencia B> punto de referencia C ejecutándolos de forma aislada, si los ejecuto todos de una vez, las diferencias entre ellos se amplifican.

También intenté cambiar el orden de los puntos de referencia (ejecutados en orden lexicográfico) y los resultados son los mismos. Es como si el número de benchmarks afectara los resultados.

¿Cuál podría ser una razón?

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

Cada punto de referencia se ejecuta en su propia JVM (a menos que se establezca explícitamente para que se comporte de otra manera), por lo que no debería ocurrir contaminación entre puntos de referencia. Lo que puede suceder, y es bastante común, es el estrangulamiento térmico de su CPU. Si está realizando una evaluación comparativa en un entorno en el que no tiene control sobre la frecuencia de la CPU, el comportamiento típico sería que la primera evaluación comparativa aumentara la frecuencia de la CPU y que las evaluaciones comparativas posteriores se estrangulen. Puede controlar esta variable en entornos Linux cambiando a un regulador de energía controlado por el usuario y configurando una frecuencia fija para su CPU.

over 4 years ago · Santiago Trujillo Report

0

De hecho, el escalado dinámico de la frecuencia de la CPU puede ser una de las razones de este problema.

Encontré este problema bastante útil para preparar el entorno para la evaluación comparativa.

over 4 years ago · Santiago Trujillo Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!