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=“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”.
[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.
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…
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]
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]
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:
gcc teste.c -o a.out
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.
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.
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
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…