java es mas rapido?? !!!!!!!!!
que tal solo vengo aqui a publicarles mi asombro... sucede que adquiri un cpu un tanto antigua es un PIII a 400 mhz 196 en ram
bueno el caso es que jugando programe un código en c que hace una suma de numeros del 1 a 65536 y le programe que hiciera esas sumas n veces, aqui esta mi codigo..
bueno cual es mi asombro que programe casi el mismo programa en java aqui esta
en teoria son iguales..
y resulta que probando le puse a los dos programas que hicieran 100000 iteraciones, que haga la suma de 1 a 65536 cien mil veces
y pues mi asombro fue que el de java termino en 20 segundos y el de c en 1 minuto 30 seg.
el sistema que tengo en esa pc es un debian 5 sin interfaz grafico ni nada solo consola..
para compilar c utilice g++
y para java openjdk 6
alguno de ustedes podrian hacer algunas pruebas tengo mucha curiosidad de saber por que sucede que es mas rapido un programa interpretado que el compilado..
o sera que el openjdk esta sumamente optimizado?
pd: para mods no se si este post va aqui :)
- Inicie sesión o regístrese para enviar comentarios
JIT
La discusión de toda la vida. La gente sigue sin entender que Java NO es interpretado desde que le metieron el compilador JIT, que convierte el bytecode a lenguaje máquina conforme se ejecuta la aplicación. La primera vez que se va a ejecutar un método de una clase, se compila esa clase a lenguaje máquina, en tiempo de ejecución, y se ejecuta ya de manera nativa.
Es como si hubieras compilado el programa en C pero con -O3 (o algo asi es la bandera para optimizar el código).
Pequeña aclaración, lo que
Pequeña aclaración, lo que escribiste no es C, sino C++, son dos lenguajes diferentes ( aunque se parecen muchisimo )
Java si es intepretado, solo que sucede que su interprete es tán fregón, que en convierte a codigo nativo, pero terminada la ejecución del programa, ese código se va y debe de volverse a crear la siguiente vez ( Algo similar hizo Google en Google Chrome con JavaScript ).
Lo que te hace falta , como dice ezamudio, es ponerle las banderas de optimización en la compilación del C++ y notarás la diferencia.
Para C++ la bandera es -O3
Para java puedes usar la bandera "-server" que hace una optimización muy similar.
Yo tuve la misma impresión hace algún tiempo:
Depende: Argument by lab toy
Esto es un típico ejemplo de "argument by lab toy", aquellos que apoyan a Java (o C#), gustan de ejemplos como este para demostrar que Java es tan, o mas rápido que C o C++. Y si, es verdad, pero el problema es solo aplica para pequeños ejemplos como el tuyo (o para partes de una aplicación que cuyo rendimiento depende del procesador), la degradación del rendimiento en cuanto a Java (o C# o cualquier otro lenguaje que uso GarbageCollector) viene cuando construyes una aplicación compleja (como Netbeans o Eclipse) y resulta que es mas lenta y consume mucho mas memoria que una aplicación equivalente en C o C++ (razon por la cual no existe nada como OpenOffice pero codificado en Java o en C#). Por supuesto, esta ineficiencia en el manejo de memoria tiene sus beneficios, ya que automáticamente evita una gran cantidad de errores de corrupción de memoria, muy comunes en lenguajes como C o C++, haciendo la depuración de programas mucho mas facil (siempre que uno recuerde leer el StackTrace).
De ahi la eterna controversia de si Java es o no mas rápido que C... y la eterna respuesta: depende, de que depende? de según como se mire todo depende...
Java siempre sera mas lento
Java siempre será más lento, el motivo es que debe hacer un paso más, al ir a su máquina virtual Saludos
No siempre será más lento.
Se me ocurren dos escenarios:
1.- Hay situaciones en las que la información que recopila en tiempo de ejecución le permitirá a la JVM hacer optimizaciones de C++ no puede, por que no conocía lo que pasaba en tiempo de compilación.
2.- Un programa mal escrito en C++ puede ser más lento que uno en Java.
En términos generals, si es más lento, en términos absolutos no siempre.
q tal gracias a todos por las
q tal gracias a todos por las respuestas.. me ausente un poco.. pero si ya esta masq aclarada mi duda y con respecto a OscarRyz lo de C y C++ esq io siempre le digo C cuando no escribo codigo usando clases xD.. yac m hizo uan costumbre mala eso..
y de echo este ejemplo ps es de lo mas sencillo es una rareza pero no m acordaba ya le clave las banderas .. y ahora gano C++ en algunas veces jaja...
bueno creoq ya qedo mi duda mas q resuelta jaja
gracias a todos.. saludos y feliz añoo
De Acuerdo
Un programa mal escrito en cualquier lenguaje, consume recursos innecesarios. Pero si el performance en C++ y java es igual, siempre será más lento java.
Un saludo
jaja ahora si. Así si..
jaja ahora si. Así si.. excepto si ... .ahhhh no es cierto.
Si, C++ está pegado al fierro lo cual lo hace super rápido. Si se necesita más velocidad aún se puede pasar directamente al ensamblador.
En Google usan mucho C++ para el buscador mismo, pues necesitan más rapidez en las vueltas cerradas ( tight loops )