[C con Clase] Varias dudas del curso

Salvador Pozo salvador en conclase.net
Vie Nov 23 08:40:02 CET 2007


El pasado 2007-11-23 00:10:58, David Reza escribió:
 
Hola:

DR> Concretamente en la parte en negritas, te refieres a que si hubiéramos
DR> escrito 10.0f de la siguiente forma?
DR> if(x == 10.0f) cout << "x es 10" << endl;

Efectivamente, a eso me refería.

Tal vez no parezca gran cosa, pero en algunos casos estas diferencias pueden ser muy importante.

Supongamos que esa línea aparece en un bucle que se repite varios cientos de veces, dentro de una función, que a su vez forma parte de una librería que usas frecuentemente en tus programas. Las millonésimas de segundo que tarda un procesador actual el hacer la conversión de int a float, multiplicadas por miles de millones de ejecuciones, se pueden convertir en horas, días o meses de ejecución.

Hay que tener en cuenta que C++, en ciertos aspectos, es un lenguaje de bajo nivel (el código fuente está muy próximo al código máquina), eso significa que los programadores somos responsables de detalles que en lenguajes de alto nivel están a cargo del compilador o del intérprete. Esto tiene sus inconvenientes, por supuesto: hay que prestar más atención a los detalles. Pero también tiene grandes ventajas, ya que tenemos un control de los procesos mucho mayor.

Los compiladores actuales tienen rutinas de optimización que, probablemente, "corrijan" este tipo de conversiones implícitas, pero dejar el trabajo al compilador nunca fue una de las características más destacables de los programadores de C o C++. :-D

Hasta pronto.

-- 
Salvador Pozo (Administrador)
mailto:salvador en conclase.net


Más información sobre la lista de distribución Cconclase