Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: SARGE553413 en 10 Enero 2014, 16:35 pm



Título: Duda con rendimiento de C/C++ [SOLUCIONADO]
Publicado por: SARGE553413 en 10 Enero 2014, 16:35 pm
Hola a todos, en otro post que escribí se mencionó algo sobre esto, resumiendo: que los compiladores hoy día son tan avanzados que optimizan el código igual o mejor que un programador.
Escribo en un post nuevo porque este tema no tiene nada que ver con el post del que he hablado arriva.

Dicho esto, mi pregunta es:
1 - A parte del hecho de que lenguajes como C,C++ al compilarse pasan a lenguaje máquina, ¿Su "compelgidad extra" puede aportar alguna mejora significativa del rendimiento con respecto a otros lenguajes de mas alto nivel como Java?
Es decir, si no podemos optimizar el código de C++ utilizando todas su posibilidades de "mas bajo nivel", porque el compilador ya optimiza hasta tal punto que (casi) no se puede mejorar, no es lo mismo hacer el programa en otro lenguaje de mas alto nivel? Porque el algoritmo va a se el mismo para los dos...
Porque lo que hace el compilador de C++, lo puede hacer el de java, y lo puede hacer el de cualquier otro lenguaje (compilado), ¿cierto?

Gracias de antemano.

PD. si hay tiempo, una novedad de C++11 es la semántica de moviemientos. Quizá me equivoque pero por lo que he leído es bastante potente. Mi pregunta es si esto lo consigue solo C++ o también los lenguajes de mas alto nivel como java etc.


Título: Re: Duda con rendimiento de C/C++
Publicado por: amchacon en 10 Enero 2014, 20:29 pm
A ver, cuanto te hice esa respuesta lo que quería transmitirte esque no te preocuparas por detalles muy rebuscados porque la ganancia es mínima y la posibilidad de provocar bugs es muy alta. Pero tampoco es llegar al otro extremo.

Lo más importante es el algoritmo, pero usando el mismo algoritmo, C/C++ son más rapidos que Java al estar compilados en código maquina. No hace falta que lo diga yo, puedes medir que tarda en ejecutarse el mismo código.

Y entre C y C++, generalmente es más rápido C porque tienes más control sobre el código. En C++ con los encapsulamientos y tal olvidas el coste que tiene algunas operaciones (por ejemplo la clase string, que es muy cómoda pero te incita a hacer muchas asignaciones, que en realidad son operaciones costosas en un array dinámico).

Lo ideal para máxima eficiencia es C con las partes más duras hechas en ensamblador. Pero eso muchas veces es casi-innecesario con los procesadores de hoy en día. Para usos militares probablemente se use C y a correr.

1 - A parte del hecho de que lenguajes como C,C++ al compilarse pasan a lenguaje máquina, ¿Su "compelgidad extra" puede aportar alguna mejora significativa del rendimiento con respecto a otros lenguajes de mas alto nivel como Java?
Es decir, si no podemos optimizar el código de C++ utilizando todas su posibilidades de "mas bajo nivel", porque el compilador ya optimiza hasta tal punto que (casi) no se puede mejorar, no es lo mismo hacer el programa en otro lenguaje de mas alto nivel? Porque el algoritmo va a se el mismo para los dos...
Porque lo que hace el compilador de C++, lo puede hacer el de java, y lo puede hacer el de cualquier otro lenguaje (compilado), ¿cierto?
El compilador optimiza las cosas evidentes. Aquí hay una lista de las que hace el gcc:
http://gcc.gnu.org/onlinedocs/gcc/Optimize-Options.htmlt


Título: Re: Duda con rendimiento de C/C++
Publicado por: SARGE553413 en 10 Enero 2014, 21:45 pm
Ok gracias por la respuesta, espero no haber molestado, en cualquier caso no era mi intención.

Saludos.


Título: Re: Duda con rendimiento de C/C++ [SOLUCIONADO]
Publicado por: amchacon en 10 Enero 2014, 21:55 pm
Yo no estoy molesto por nada ^^