Performance do Java

Lupino

I'm cool cuz I Fold
Como aparece sempre alguém a falar mal da performance do Java... ou a dizer que o java é uma m@#$& só porque não sabem trabalhar com Java, decidi abrir este tópico para desmistificar de uma vez por todas que o Java afinal não é assim tão lento como algumas pessoas pensam.
Para aqueles que dizem que o Java é uma m@#$&... a única conclusão que tiro... vocês pode ver aqui

Em relação ao tópico podem ver uma comparação entre a performance do java VS c++
http://kano.net/javabench/index
http://kano.net/javabench/data

Este teste foi realizado com a versão 1.4.2_01 JVM da Sun.

Para terem uma noção do progresso das vm's da sun podem ver uma comparação entre as vm's 1.5(Tiger) e 1.6(Mustang).
http://weblogs.java.net/blog/opinali/archive/2005/11/mustangs_hotspo.html


Quem quiser refutar os testes está à vontade :x2:

[[]]'s
 
?! java vs c++ ?

e k tal java vs c# ?

a questão destes testes é que podes implementar o fibonacci ou outro desses algoritmos de formas diferentes e usando estruturas de dados diferentes. logo os resultados podem ser biased.
 
chight disse:
?! java vs c++ ?

e k tal java vs c# ?

a questão destes testes é que podes implementar o fibonacci ou outro desses algoritmos de formas diferentes e usando estruturas de dados diferentes. logo os resultados podem ser biased.

Por isso é que tens acesso ao código fonte utilizado nos testes...
Achas que foi isso que aconteceu neste caso?

[[]]'s
 
Continua a ser ou biased propositadamente ou estupidamente.
Se quer fazer os testes SÓ em x86 que faça entre java e código compilado com flags como deve ser, para aproveitar ao máximo as caracteristicas de cada processador.
Não só isso mas por exemplo abri ao calhas um dos testes e deparei-me com isto...
Código:
//C++
unsigned long fib(unsigned long n) {
    if (n < 2)
	return(1);
    else
	return(fib(n-2) + fib(n-1));
}

Código:
//Java
public static int fib(int n) {
	if (n < 2) return(1);
	return( fib(n-2) + fib(n-1) );
    }

Promenor de na de C++ a funcão ser long e na de Java ser int...Biased?? Nah...:rolleyes:
 
quem programa sabe que a apartir do 1.4 o Java deu um tremendo salto em termos de performance, e neste momento até que está com uma performance aceitável, veja-se o caso do azureus que é feito em java.
 
Tuaregue disse:
quem programa sabe que a apartir do 1.4 o Java deu um tremendo salto em termos de performance, e neste momento até que está com uma performance aceitável, veja-se o caso do azureus que é feito em java.
Exactamente e depois vês o utorrent feito em C++ e compara as diferenças...
Java é uma excelente linguagem em muitos aspectos, mas como tudo tem falhas. Uma dessas falhas é que 2 aplicações iguais tête-a-tête num ambiente real a de java vai ser muito mais lenta e resource-hog que uma feita em C++ ou C.
 
TuxBoss disse:
Exactamente e depois vês o utorrent feito em C++ e compara as diferenças...
Não compares o utorrent com o Azureus, são programas que fazem o mesmo na sua geneses, mas são totalmente diferente, o Azureus tem mais opções e afins e isso pesa. Mas é claro que todo (quase todo) o software que corre em cima de uma virtual machine vai ser mais lento, existem algumas execpções mas isso tem a ver com certos truques que fazem em algumas VM.
 
Isso é tudo muito giro mas na minha opinião o Java funciona bem é em server-side. O overhead que a JVM cria ao iniciar dá sempre a percepção real de que o código é mais lento. Por outro lado a quantidade de recursos que é necessário para correr uma aplicação tamanho e complexidade médio/grande é brutal o que não abona muito a favor do Java.

Eu reconheço que o Java tem alguns problemas mas a performance até nem é o maior deles. O problema são aqueles gajos que consideram o Java a melhor coisa do mundo e que este não tem defeitos... É o que dá quando se começa a criticar o ganha-pão de muita gente! :D
 
TuxBoss disse:
Código:
//C++
unsigned long fib(unsigned long n) {
    if (n < 2)
	return(1);
    else
	return(fib(n-2) + fib(n-1));
}

Código:
//Java
public static int fib(int n) {
	if (n < 2) return(1);
	return( fib(n-2) + fib(n-1) );
    }

Promenor de na de C++ a funcão ser long e na de Java ser int...Biased?? Nah...:rolleyes:

O tamanho de um long em C++ é de 4 bytes.... O tamanho de um int em Java é de 4 bytes. :wow: Biased!?! Onde??!

[[]]'s
 
o long e o int em C++ actual é a mesma coisa! (inteiros de 32 bits!!!)

antes de existirem cpu's de 32 bits que o long era 32 bits e o int 16...

portanto vai dar no mesmo ;)

para os 64 bits utiliza-se o "long long"
 
Back
Topo