Desempenho Java x C

corrijao me se eu estiver errado, mas o gcc nao otimiza o codigo por default para o computador onde esta sendo compilado??? eu compilei e rodei no mesmo computador… entaum nao estava otimizado pro meu computador??? nao tenho certeza disso pois sou iniciante em C, mas lembro de ter lido em algum lugar que o gcc otimizava por default pro pc que ta compilando…

e soh pra deixar claro, em nenhum momento eu quis dizer que java eh mais rapido que C, tanto eh que eu pensei que C iria ficar na frente nos testes que fiz, o que eu to querendo eh mostrar que Java NÃO eh lento como dizem por ai…

[quote=“microfilo”]hahahahahah

java é demais!!!

que venha o .NET!!![/quote]

Já que pediram, eu topei o desafio e coloquei os resultados lá no GUJ: http://www.guj.com.br/posts/list/15/19168.java#100433 :slight_smile:

[quote=“sens”]me corrijão se eu estiver errado, mas o “long” em C admite valores de ponto flutuante neh ? (ex: 5,6989). E esse tipo de dado leva mais tempo para ser processado do que aqueles que apenas admitem valores inteiros.

mas dé qualquer forma a comparação é válida, C é considerado uma linguagem muito veloz, e o java chegar próximo a ele já mostra que de lento ele só tem a fama (AINDA).[/quote]

long é para valores inteiros, igual o int, so que maior. O tipo de ponto flutuante em C é “float” e “double”.

po, daniel, não era pra humilhar o .NET…

[quote=“Felipe”]mas o gcc nao otimiza o codigo por default para o computador onde esta sendo compilado???
[/quote]

Hum… eu não conheço o GCC, pode ser verdade. Mas acho pouco provavel… acredito ser mais correto assumir compatibilidade e portabilidade como default, assim como faz o compilador da microsoft… o GCC deve seguir a mesma filosofia. É o caso de dar uma pesquisada…

[quote=“Felipe”]
e soh pra deixar claro, em nenhum momento eu quis dizer que java eh mais rapido que C, tanto eh que eu pensei que C iria ficar na frente nos testes que fiz, o que eu to querendo eh mostrar que Java NÃO eh lento como dizem por ai…[/quote]

Perfeito Felipe, você foi correto. Apenas fiz minhas colocações para conter excessos de empolgação.

Java mais rápido que C?

Claro que tem coisa errada aí.
Até porque a máquina virtual é feita em C, né não ?

Bom, é óbvio que C sempre vai ser mais rápido que Java
se forem feitos programas otimizando da melhor
maneira para obter o melhor desempenho possível.

Conclusão:
Java é rápido o bastante.
O Swing é que é absurdamente lento, daí
vem a fama de Java ser lento.

[quote=“soldate”]O Swing é que é absurdamente lento, daí
vem a fama de Java ser lento.[/quote]

Me parece q no Tiger a coisa mudou um poko.

Eu ainda naum testei, mas o pessoal ta falando q o desempenho melhorou mto na nova versão.

:wink:
[]'s

Desculpem minha ignorância, mas o que é Tiger? Uma IDE?
Onde encontro?

[quote=“Schuenemann”]Desculpem minha ignorância, mas o que é Tiger? Uma IDE?
Onde encontro?[/quote]

Tiger é o sinonimo de Java 5! é só a nova versão do Java… o Java Tiger, ou Java 5, ou simplesmente Tiger

Swing lento? Hummm… Não sei: http://www.javalobby.org/articles/swing_slow/index.jsp

[quote=“DanielQO”][quote=“microfilo”]hahahahahah

java é demais!!!

que venha o .NET!!![/quote]

Já que pediram, eu topei o desafio e coloquei os resultados lá no GUJ: http://www.guj.com.br/posts/list/15/19168.java#100433 :)[/quote]

sobre o que vc postou no GUJ…

o stackoverflow ocorreu ai pq por default a JVM esta configurada pra usar apenas 64MB de ram, dai soh o array que tem um milhao de elementos, e cada int ocupa 4 bytes, vai ocupar 40MB (na verdade um pouco menos, jah que 1KB = 1024B e 1MB = 1024KB), e cada chamada recursiva vai gastar mais a memoria das variaveis dos metodos e ainda a memoria que vai ser usada para “apontar” para onde retornar (stack), e ainda tem a memoria alocada pela JVM…

bem, aki rodou, nao sei pq ai faltou memoria, mas tente repetir o teste com um array menor…

Dá-lhe tiger…

aiô mustang… :razz:

So vejam o meu avatar!!! V8tão!!!

Programo para a web, na plataforma J2EE, e sempre escuto dizer que é uma linguagem muito lenta e que nunca vai chegar a competir com o PHP.

Quer saber o PHP é que nunca vai chegar aos pés do JAVA, pois quer maior prova: o site de um dos maiores bancos do mundo e que foi eleito o mais seguro também “www.bb.com.br”.

E tem mais, pois soube que ele não segue o padrão MVC, mas é bem estruturado arquitetonicamente e tem uma ótima performance. 8O

[quote=“cleo_nascimento”]Programo para a web, na plataforma J2EE, e sempre escuto dizer que é uma linguagem muito lenta e que nunca vai chegar a competir com o PHP.

Quer saber o PHP é que nunca vai chegar aos pés do JAVA, pois quer maior prova: o site de um dos maiores bancos do mundo e que foi eleito o mais seguro também “www.bb.com.br”.

E tem mais, pois soube que ele não segue o padrão MVC, mas é bem estruturado arquitetonicamente e tem uma ótima performance. 8O[/quote]

AFFFFFF

php = asp gratis

caramba surpreendente !!!
eu trabalha com um cara amante de C, ai ele nao se conformou e disse q era impossivel entao ele disse q ia provar q ia otimiza o codigo c… mas ???
[size=“18”]
entao ele consegui otimizou o codigo!!! [/size]
mas do JAVA
o java ficou dois segundos mais rapigo !!!
kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk!!! ele ficou puto!!!
[size=“18”]
nos zuamos muito ele!!! com while o java fica mais rapido!!![/size] :serra: :bei:[/size]

Seguinte,

Devido ao excesso de empolgação do pessoal, fui obrigado a fazer alguns testes. Volto a afirmar, que Java nunca será mais rápido que C! Uma boa justificativa é da propria JVM ser implementada nesta linguagem, como foi colocado por alguém antes.

Bem, indo ao teste… peguei o mesmo código gerado pelo nosso amigo Felipe:

int main(){ 
    long i, x = 0; 
    for (i = 0; i < 2000000000; i++){ 
        x++; 
    } 
}

Compilei duas vezes, com os seguintes comandos:

  1. gcc teste.c -o a.out
  2. gcc teste.c -O3 -o b.out

Para explicar, no primeiro compilo sem ativar otimizações, que é a configuração default do GCC. No segundo comando, ativo o grau maximo de otimizações.

Resultados:
a.out executou em aproximadamente 20 segundos
b.out executou em aproximadamente 6 segundos

Cronometrei manualmente também, apenas para dar uma ideia da diferença… não sei a configuração da máquina que utilizei.

Sugiro que o Felipe refaça os testes utilizando o otimizador do GCC, certamente o resultado será invertido.

Abraços,
Daniel

Oi

Pessoal, hehehe mas esta discussão ainda nem chegou nas partes boas hein…

Bocian, se for pra apelar otimizando na compilação, o Java tb tem otimização, mas comnhecido como JIT ou Just in Time…

O JIT CLient já roda or default na VM da Sun, mas existe o JIT Server, que da mais performance ainda a aplicação e tb outros compiladores JIT que nao sao da Sun, que aumentam a performance ainda mais, muito mais…

Se tu esitver com o Tiger, roda este exemplo com o comando: java -server SuaClasse e verá o resultado, não tem pra onde correr.

Um exemplo, em aplicações com gerenciamento de memória muito complexo, usando JIT, Java não é só mais rápido do que C/C++, é increditavelmente mais rapido, é muito mais rápido.

T+

haiuehiuaheiuahe

Sinceramente… Eu acho tbm que o C deva ganhar do JAva… mas e dai?! se ele ganhar é pq tem que ganhar mesmo… porém como podemos ver, Java está cada vez mais encostando no C, e em alguns passos até passando devido a muitas implementações…

Vou pedir para um pessoal que desenvolvem Sistemas Operacionais, pessoal da antiga Conectiva, para desenvolver um código em C super-ultra rápido, e dai colocamos ele para rodar contra um em Java, para ver qual que vai ser o bizu que vai dar!
hehehehe

aguardem!

eu jah tinha ouvido desses recursos que o jeve falou, mais nunca cheguei a usar (inclusive nao usei nesses testes)… e inclusive, nao hora de compilar pode-se passar a flag “-O” (Otimizar), isso faz com que o prog seja compilado sem as informacoes pra debug, o que deixa mais rapido…

e daniel_bocian, lembre-se que os aplicativos distribuidos em C, nao vao ser distribuidos otimizados, a nao ser que eles facao uma compilacao pra cada hardware (ou eles podem mandar o codigo pra pessoa compilar no proprio PC, mas isso ocorre soh com software livre)…

hj to meio sem tempo, mas amanha vou ver se faco mais uns testes…