Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

152
Vistas
¿Un bucle for grande es más rápido que dos pequeños?

En el código, he hecho dos bucles for:

 for(int y = 0;i < HEIGHT; y++){ for(int y = 0;i < WIDTH; y++){ //lots of switch cases } }

y me pregunto, ¿es más rápido usar uno para bucle como este? :

 for(int i = 0;i < HEIGHT*WIDTH; i++){ //lots of switch cases }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

El concepto erróneo habitual de los novatos: el rendimiento de Java no surge del "código fuente inteligente de Java".

La parte clave es: las optimizaciones que hace el compilador justo a tiempo en tiempo de ejecución. Y eso comienza con: el JIT que decide si el código se invoca con la frecuencia suficiente para que valga la pena optimizarlo.

Por lo tanto, la respuesta real a (la mayoría) de las preguntas sobre el rendimiento de Java es:

  • escribir código simple que sea correcto y legible
  • ya que eso permite que el JIT optimice las cosas cuando sea necesario Y
  • también le permite mejorar su código más adelante, en caso de que realmente haya escrito código que por este o aquel motivo genere problemas de rendimiento.

(y ese tercer punto, se da cuenta de que debido a que sus usuarios/pruebas revelan un "mal rendimiento", y luego realizó muchas mediciones para identificar la verdadera causa raíz de ese problema)

Por lo tanto, como se dijo: concéntrese en escribir un código correcto que sea fácil de leer y comprender, y no se preocupe por el rendimiento hasta mucho más tarde.

over 4 years ago · Santiago Trujillo Denunciar

0

No.

Como se mencionó, debe determinar su condición final antes de usar un ciclo, lo que significa que debe tener

 int total = height*width; for( int i=0; i < total; ++i ) { // ... }

para que el total no se calcule constantemente durante el ciclo. Dicho esto, todos lo hacen y espero que el compilador optimice su versión en esta versión de todos modos.

El verdadero problema, como yo lo veo, es que en el bucle es posible que deba invertir el cálculo del total , lo que significa que es posible que deba tener

 int total = height*width; for( int i=0; i < total; ++i ) { int x = total / width; int y = total % height; call(x,y); }

Esto sería más lento que

 for( int i=0; i < width; ++i ) { for( int j=0; i < height; ++i ) { call(i,j); } }

que debería ser más rápido. Esto no tiene en cuenta las "operaciones de bifurcación" en las CPU. Consulte Programación sin sucursales: ¿Por qué "si" es Sloowww... y qué podemos hacer al respecto? .

EDITAR: Y sí, el comentario más destacado en este hilo es que deberías preocuparte por la legibilidad mucho más por el rendimiento.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda