Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

169
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda