| |||
Respuesta: Uso excecivo de endl; pues por ahi lo lei, pero diganme entonces si es cierto o no hay problema cout << "hola" << endl; cout << "hola" << endl; cout << "hola" << endl; cout << "hola" << endl; cout << "hola" << endl; esto es execivo o esta bien, gracias |
| |||
Respuesta: Uso excecivo de endl; Si lo que quieres es mostrar cinco "hola", uno en cada línea, está bien. No te preocupes :) No sé de dónde habrás sacado esa información, pero así fuera de contexto no tiene mucho sentido. Sería por algún caso particular, pero en general no tiene nada de malo. O tal vez sería alguna opinión de los que están en contra de utilizar cout. En cualquier caso, no hay ningún problema. |
| |||
Respuesta: Uso excecivo de endl; Por ejemplo, cuando tienes algo como:
Código:
Eso es equivalente a tener:cout << "myText" << endl;
Código:
Es decir, con "endl" no solo agregas un salto de línea sino que además obligas a que los datos del bufer sean copiados de manera inmediata a su destino, en este caso la salida estándar.cout << "myText" << "\n" << flush; Lo anterior debe quedar más claro con el siguiente ejemplo que utiliza un flujo hacía un archivo de texto:
Código C++:
Ver original La intención del programa anterior es garantizar que "important" sea copiado a su destino (sample.txt) a pesar de que el programa termine inesperadamente. Como podrás darte cuenta eso se logra facilmente utilizando endl, cosa que no sucede con "unimportant" ya que el bufer de salida no es copiado a su destino como sucedería habitualmente con un programa que termina de manera normal. Bien, en cuestión de rendimiento muchas veces puede ser innecesario el uso excesivo del flush, que esto a su vez puede traducirse en un uso excesivo de endl, por ejemplo; no es lo mismo escribir 200000 líneas en un archivo de texto donde cada línea se va copiando de manera permanente a través de un endl, que almacenar todas las líneas con su respectivo salto de línea y utilizar un solo flush al final. Ejemplo:
Código C++:
Ver original En fin, la cuestión que creo importante es conocer la diferencia entre un salto de línea y endl, porque eso te permite identificar zonas de mejora en el rendimiento de una aplicación, sobre todo aquellas aplicaciones con gran demanda de I/O hacía archivos externos. |
| |||
Respuesta: Uso excecivo de endl; Nunca te acostarás sin saber algo nuevo... no sabía yo eso del endl. Lo que sí sé es que el printf, al menos en linux con gcc, al ponerle un \n vacía el buffer de salida. Y el c++ con g++ tres cuartos de lo mismo. |
Etiquetas: Ninguno |