| Ver tema anterior :: Ver siguiente tema |
| Autor | Mensaje |
|---|
cigoba

Registrado: 27 Ago 2007 Mensajes: 39
| Publicado: 23/10/2007 8:56 am | | | Título: Velocidad de ejecucion entre C++ y C |
| Hola a todos
Me acaba de entrar una duda con respecto a la velocidad de ejecucion o el rendimiento del proceso de ejecucion en hacer un mismo programa ESTRUCTURADO con C y con C++.
Resulta que siempre se decia que si vas a hacer un programa estructurado utilizando C o C++, convendria hacerlo en C porque el rendimiento y la velocidad de ejecucion (aunque sea casi imperceptible para el ser humano) se nota en la computadora a nivel de rendimiento. Por lo tanto aconsejaban: "Si quieres hacer un programa estructurado hazlo en C y no en C++ porque en C se ejecutara mas rapido que si lo haces en C++. Utiliza C++ para la programacion orientada a objetos, independientemente de que C++ sea multiparadigma."
Pero ahora en una página (un foro) que encontré por ahi dice que eso no es cierto: que la velocidad de ejecucion de un programa estructurado hecho en C++ es igual que en C.
Yo humildemente sigo pensando que un programa estructurado hecho en C correra mas rapido que el mismo programa estructurado hecho en C++ puro. Utilizaria C++ para hacer programas orientado a objetos puro, para aprender la POO; o en proyectos de gran envergadura puesto que ahi la POO tiene sus frutos.
Cuando digo C++ puro me refiero, por ejemplo, utilizar las funciones propias de C++ como ser cout, cin, delete. En cambio en C seria utilizar las funciones scanf, printf, free que son propias de C.
Quisiera que alguien bien entendido de C y C++ de su opinion al respecto y me diga si es cierto o no que C es mas veloz que C++ si se hace el mismo progama estructurado.
Saludos _________________ esta es mi firma. |
|
| Volver arriba | |
 |
cigoba

Registrado: 27 Ago 2007 Mensajes: 39
| Publicado: 23/10/2007 12:49 pm | | | Título: |
| Volviendo con este tema:
Me olvide de fundamentar que C deberia ser mas rapido que C++ porque el primero es de mas bajo nivel que el segundo. Por ejemplo, un scanf en C es mas 'crudo' que un cout en C++, es decir, el scanf es de mas bajo nivel que el cout de C++. Por lo tanto al ser una instruccion (scanf) de mas bajo nivel que otra (cou), entonces la primera se procesara mas rapido. No se si me entienden. Que opinan ustedes?. _________________ esta es mi firma. |
|
| Volver arriba | |
 |
cigoba

Registrado: 27 Ago 2007 Mensajes: 39
| Publicado: 23/10/2007 12:53 pm | | | Título: |
| Haber si alguien me saca de esta encrucijada... _________________ esta es mi firma. |
|
| Volver arriba | |
 |
|
jonan_1988
Registrado: 12 Abr 2005 Mensajes: 49
| Publicado: 23/10/2007 1:54 pm | | | Título: |
| Vamos a ver, aquí hay dos factores que pueden dar razón a uno o a otro.
Si nos ponemos estrictos y suponemos que tenemos un programa hecho en C y ese mismo hecho en C++ y los dos tienen el algoritmo perfecto. C es más rápido y el ejecutable ocupa menos y esto se nota en programas grandes.
Ahora bien, hay otro problema. En C++ tienes una librería estándar que te hace muchísimas cosas que en C tienes que hacer a mano: listas, colas, strings... Todas estas cosas están miradas y revisadas a conciencia y podríamos decir que es el algoritmo perfecto para diseñarlas. Si un programador inexperto las implementa en C es muy probable que su algoritmo no sea tan bueno y eso haga que el mismo programa sea más rápido en C++ que en C. _________________ Diario de un pre-informático |
|
| Volver arriba | |
 |
cheroky
Registrado: 22 Sep 2005 Mensajes: 1372 Ubicación: En ecx esperando un call
| Publicado: 23/10/2007 2:59 pm | | | Título: |
| La eficiencia final del ejecutable depende en gran medida del compilador y de las librerias c/c++ runtime del sistema.
Entre un:
y un:
| Código: | scanf("%d" ,&var); |
Me atreveria a decir que es mas eficiente el primero por que se comprueba el tipo en la fase de diseño (template) mientras que scanf delega esto ultimo en el especificador de formato, ademas de tener que parsear dicho especificador en tiempo de ejecución. Esto en la vida real es inviable por que nadie tiene la capacidad de introducir millones de datos por unidad de tiempo sobre la entrada estandar :-P
Y como comentaba jonan_1988, la STL al dia de hoy esta muy optimizada, para conseguir el mismo perfomance o mejorarlo tendriamos que optimizar tambien muchisimo las implementaciones propias equivalentes, esto al menos desde un punto de vista generico. Con C, conceptualmente, podemos afrontar los problemas de forma mas especializada.
S2. _________________ - Explícito es mejor que implícito. - Simple es mejor que complejo. - Complejo es mejor que complicado. - Plano es mejor que anidado. - Ralo es mejor que denso.
Ultima edición por cheroky el 23/10/2007 3:51 pm; editado 1 vez |
|
| Volver arriba | |
 |
cigoba

Registrado: 27 Ago 2007 Mensajes: 39
| Publicado: 23/10/2007 3:12 pm | | | Título: |
| Entonces,cual es la conclusion final y resumida de este tema?. Deberemos programar nomas en C++ (y dejar de lado al C) ya que su algoritmo es mas eficiente, sus funciones tambien lo son, y nos detecta mejor los errores?. _________________ esta es mi firma. |
|
| Volver arriba | |
 |
|
cheroky
Registrado: 22 Sep 2005 Mensajes: 1372 Ubicación: En ecx esperando un call
| Publicado: 23/10/2007 4:25 pm | | | Título: |
| Nadie dice que C++ sea más eficiente, ni mucho menos, en ciertos campos como en la programación de sistemas o situaciones criticas C esta más indicado. Si necesitamos implementar una cola con campos de bits de un nibble siempre será mas optima una especialización en C que utilizar un contenedor como como la plantilla bitset de C++.
Ahora bien, retomando la pregunta inicial sobre la comparación de eficiencia de ambos lenguajes en forma estructurada es prácticamente trivial por que los mecanismos del lenguaje como punteros, llamadas a funciones y demás son casi un calco en ambos y no se limita a comparar algo como cout que es una instancia de un objeto, y scanf una función, lo primero implica una llamada a un constructor y destructor y aun así este (como dije anteriormente) podría ser mas "eficiente".
Mi consejo es que programes en ambos (si puedes) y usa cada uno como y cuando mas gustes, ambos lenguajes (en mi caso) me apasionan, y no tomes demasiado en serio lo que te digan, la programación tiene más de arte que de ciencia.
S2. _________________ - Explícito es mejor que implícito. - Simple es mejor que complejo. - Complejo es mejor que complicado. - Plano es mejor que anidado. - Ralo es mejor que denso. |
|
| Volver arriba | |
 |
cigoba

Registrado: 27 Ago 2007 Mensajes: 39
| Publicado: 23/10/2007 5:45 pm | | | Título: |
| Gracias por las respuestas. Saludos. _________________ esta es mi firma. |
|
| Volver arriba | |
 |
|
|