Respuesta
De Wiktionary:
- (informática) En lenguajes ensambladores, un bucle que contiene pocas instrucciones y repite muchas veces.
- (informática) Un bucle que utiliza mucho I/O o recursos de procesamiento, fallando para compartirlos adecuadamente con otros programas que se ejecutan en el sistema operativo.
Para el caso 1 es probable que sea como
for (unsigned int i = 0; i < 0xffffffff; ++ i) {}
1) El ejemplo no es un ciclo cerrado, es un NOP :) 2) Nunca he visto este significado en mi vida. Suena más como un "cerdo de recursos" –
un compilador inteligente (ish) con algunas optimizaciones inteligentes (ish) se desharán de él. – djh
De acuerdo con el diccionario de Webster, "Un bucle de código que se ejecuta sin liberar ningún recurso a otros programas o al sistema operativo".
http://www.websters-online-dictionary.org/ti/tight+loop.html
Lo he visto, pero ¿podrías ilustrarlo con un ejemplo? –
En realidad, no estoy de acuerdo con esta definición. como la mayoría de los bucles no liberan tales recursos, implica que la mayoría de los bucles son bucles apretados. –
creo que la frase se utiliza generalmente para designar un bucle que itera muchas veces, y que puede tener un grave efecto sobre el rendimiento del programa - que es , puede usar muchos ciclos de CPU. Normalmente escucharía esta frase en una discusión sobre optimización.
Por ejemplo, pienso en juegos, donde un bucle podría necesitar procesar cada píxel en la pantalla, o una aplicación científica, donde un bucle está procesando entradas en grandes conjuntos de puntos de datos.
Una parte del código que se ejecuta con frecuencia puede ser un buen candidato para la optimización, pero no es un ciclo cerrado en general. Incluso si se llama con frecuencia: si la llamada ocurre a través de varias capas de funciones y objetos, no es "ajustada". La condición de bucle y las instrucciones de bucle deben ser realmente ajustadas entre sí, codificar en el mismo archivo y las mismas pocas líneas para un "bucle cerrado". – foo
He escuchado el tipo de ciclo descrito en la respuesta llamado "punto caliente" en un programa, un lugar donde la optimización dirigida dará sus frutos. Por esta misma razón, Sun denominó a su tecnología de compilación justo a tiempo adaptada al perfil "HotSpot". –
@foo: No tienen que estar en el mismo archivo. Los compiladores modernos pueden eliminar capas de abstracciones en nada ... (por ejemplo, plantillas C++) –
Hay un buen ejemplo de un ciclo cerrado (~ ciclo infinito) en el video Jon Skeet and Tony the Pony.
El ejemplo es:
while(text.IndexOf(" ") != -1) text = text.Replace(" ", " ");
que produce un bucle estrecho porque IndexOf
ignora un carácter de anchura cero Unicode (por lo tanto encuentra dos espacios adyacentes) pero Replace
no ignora ellos (por lo tanto no la sustitución de los espacios adyacentes) .
Ya hay buenas definiciones en las otras respuestas, así que no las vuelvo a mencionar.
Un bucle cerrado es uno que es compatible con la memoria caché de la CPU. Es un bucle que se adapta a la memoria caché de instrucciones, que no se ramifica y que efectivamente oculta la latencia de recuperación de memoria para los datos que se procesan.
La respuesta de SandeepJ es la correcta en el contexto de los dispositivos de red (por ejemplo, ver la entrada de Wikipedia en middlebox) que tratan con paquetes. Me gustaría añadir que el subproceso/tarea que ejecuta el ciclo cerrado intenta permanecer programado en una sola CPU y no se desactiva el contexto.
Por experiencia, me he dado cuenta de que si alguna vez usted está tratando de hacer un bucle que se ejecuta de forma indefinida, por ejemplo, algo como:
while(true)
{
//do some processing
}
Tal bucle lo más probable es siempre exige muchos recursos. Si comprueba el uso de CPU y memoria por el proceso con este bucle, verá que se habrá disparado. Tal es la idea que algunas personas llaman un "círculo cerrado".
- 1. ¿El lazo cerrado es malo?
- 2. Devolución de llamada de ThreadPool en lazo cerrado - 100% CPU
- 3. ¿Por qué el lazo de prueba inferior es preferible?
- 4. ¿Cuándo es efectivo el desenrollado de lazo?
- 5. ¿Es seguro el hilo cerrado?
- 6. ¿por qué obtengo java.io.IOException: Stream cerrado?
- 7. Pregunta sobre velocidad de lazo
- 8. ¿Por qué no está dispuesto/cerrado SqlConnection?
- 9. evaluación de condición de lazo
- 10. ¿Por qué escribir un socket TCP cerrado es peor que leer uno?
- 11. Redireccionar lazo con Devise after_sign_in_path_for
- 12. SQL Server para cada lazo
- 13. Forzar cerrado un archivo abierto por C#
- 14. ¿Por qué Haskell enumera las comprensiones con múltiples generadores que tratan el generador más a la derecha como el lazo más cerrado?
- 15. sintaxis razor: lazo con ifs y divs
- 16. C++ iterador en trampas de lazo?
- 17. Cómo crear un ListView cerrado (circular)?
- 18. QGraphicsPolygonItem dibujando un polígono abierto (no cerrado)
- 19. Cómo hacer un lazo de tubo en bash
- 20. Alternativa al lazo anidado para comparación
- 21. ¿Es este un mal patrón? (Interruptor en el interior para lazo/foreach)
- 22. La construcción de lazo más elegante?
- 23. Fortran hacer lazo con Goto interna
- 24. C Lazo principal sin 100% CPU
- 25. ¿Qué podría estar causando este rails ioerror cerrado flujo?
- 26. en un bloque "using" es un SqlConnection cerrado en devolución o excepción?
- 27. ¿Está CERRADO/FCLOSE en stdin se garantiza que es correcto?
- 28. MemoryStream - No se puede acceder a un Stream cerrado
- 29. Javascript: ¿Cómo borrar un SetTimeout no global (cerrado)?
- 30. JSTL c: forEach, lazo de número decremental imposible?
Un contexto en el que lea esto nos ayudaría a entender su pregunta. ¿Podría proporcionar una cita, un enlace o alguna pista? –
Acabo de oír hablar de eso en la oficina. No acabo de registrar el contexto. Supongo que me molestó un poco el hecho de tanto hablar sobre seguir. –
Podría ser que la gente de la oficina está arrojando palabras de moda aleatorias. O no. Podrías preguntarles qué quieren decir. –