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

153
Views
¿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 answers
Answer question

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 Report

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 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!