"Java não tem performace"

[quote=Java Lover]Imagina vc com uma doença rara, 10 dias de expectativa de vida e 200 médicos calculando a dose certa do remédio.
Destes, 100 médicos usando C++ e 100 médicos usando JAVA, cada um em seu PC.
Os médicos usando C++ trariam 100 respostas diferentes a cada dia totalizando 1000 respostas imprecisas, enquanto que os médicos usando JAVA trariam 100 respostas iguais no décimo dia totalizando 1 resposta precisa.
[/quote]

Bom, o que acontece é que num sistema crítico, talvez o Java dê 100 respostas iguais no 11º dia. Enquanto o C++ associado a um hardware médico específico, te dê essa resposta nos primeiros 30 minutos, e com muito mais precisão, já que ele irá usar um padrão muito melhor do que o do IEEE…

Se a situação é crítica assim, é bem provável que você não estará usando o C++ levianamente, como no exemplo supracitado.

[quote=ViniGodoy][quote=Java Lover]Imagina vc com uma doença rara, 10 dias de expectativa de vida e 200 médicos calculando a dose certa do remédio.
Destes, 100 médicos usando C++ e 100 médicos usando JAVA, cada um em seu PC.
Os médicos usando C++ trariam 100 respostas diferentes a cada dia totalizando 1000 respostas imprecisas, enquanto que os médicos usando JAVA trariam 100 respostas iguais no décimo dia totalizando 1 resposta precisa.
[/quote]

Bom, o que acontece é que num sistema crítico, talvez o Java dê 100 respostas iguais no 11º dia. Enquanto o C++ associado a um hardware médico específico, te dê essa resposta nos primeiros 30 minutos, e com muito mais precisão, já que ele irá usar um padrão muito melhor do que o do IEEE…
[/quote]

Agora fiquei curioso. qual é esse padrão que é melhor que o do IEEE e porquê é melhor ?

Na verdade, estou falando do strictfp, que impõe os calculos para precisão de single ou double (definido no padrão por 32 ou 64 bits).
Por isso o java dá um resultado idêntico em todas as plataformas.

Se for uma VM sem isso imposto, o resultado do cálculo será idêntico ao do C++, um para cada plataforma.

Agora, numa aplicação C++, vc poderia realizar cálculos com precisão quádrupla, numa máquina que tivesse um registrador de calculo de 128 bits, por exemplo. Ou mesmo usar processadores de 256 bits de precisão (que já fogem do padrão), como é feito em algumas aplicações meteorológicas.

O exemplo é que foi ruim, pois ele considera um software crítico, onde o hardware específico geralmente é usado. E, quando o assunto é manipular um hardware específico, você terá mais dificuldades se tiver uma máquina virtual sobre ele, pelo próprio conceito de máquina virtual em si.

Numa aplicação crítica, isso poderia ser a diferença entre obter 100 respostas idênticas, mas incorretas, ou respostas corretas num hardware específico. Existe mais dificuldade e menos portabilidade? Claro. Mas estavamos falando aqui em algo capaz de calcular a dosagem de medicamentos em tempo recorde, e salvar vidas, não?

creio que não seria correto dizer que as respostas seriam imprecisas. O que aconteceria é que a precisão numérica seria diferente de acordo com o hardware, como o vini explicou, mas ambos os software chegariam a resposta correta. A diferença está na velocidade do cálculo e nas casas decimais.

[quote=ViniGodoy]O exemplo é que foi ruim, pois ele considera um software crítico, onde o hardware específico geralmente é usado. E, quando o assunto é manipular um hardware específico, você terá mais dificuldades se tiver uma máquina virtual sobre ele, pelo próprio conceito de máquina virtual em si.
Numa aplicação crítica, isso poderia ser a diferença entre obter 100 respostas idênticas, mas incorretas, ou respostas corretas num hardware específico. Existe mais dificuldade e menos portabilidade? Claro. Mas estavamos falando aqui em algo capaz de calcular a dosagem de medicamentos em tempo recorde, e salvar vidas, não?[/quote]Por este motivo que o instrumento (robô) no qual trabalhei, foi programado em Fortran, liberando um diagnóstico sanguíneo em 6 segundos, contra 60 segundos em Delphi, 180 segundos em VB.
Java x C++ ficaram equivalentes em 30 segundos.
Tempos médios aproximados.
A solução híbrida de Fortran + (Delphi ou VB ou Java ou C++) possibilitou cálculos rápidos e precisos no Fortran e apresentação agradável da GUI nas outras LPs.
Vários outros instrumentos que trabalhei continuaram com puro Fortran usando LCD mas sempre ultra-rápidos e confiáveis.

Existem bibliotecas em C++ pra esse tipo de operação.

Fico aqui me perguntando… se C++ é tão maravilhoso… prq não programamos todos para C++ na web ?

Outra coisa que não entendo : http://br-linux.org/2010/crescimento-faz-twitter-trocar-o-mysql-pelo-cassandra

Prq eles nao desenvolvem em C++ tudo ? PARA QUE FICAR UTILIZANDO JAVA ? VIVA !

PS: Olha que legal , aqui posso editar as minhas mensagens !!! Agora fico tão hacker quanto o Augusto do Br-Linux

[quote=Java Lover]Por este motivo que o instrumento (robô) no qual trabalhei, foi programado em Fortran, liberando um diagnóstico sanguíneo em 6 segundos, contra 60 segundos em Delphi, 180 segundos em VB.
Java x C++ ficaram equivalentes em 30 segundos.
Tempos médios aproximados.
A solução híbrida de Fortran + (Delphi ou VB ou Java ou C++) possibilitou cálculos rápidos e precisos no Fortran e apresentação agradável da GUI nas outras LPs.
Vários outros instrumentos que trabalhei continuaram com puro Fortran usando LCD mas sempre ultra-rápidos e confiáveis.[/quote]

Interessante saber.

[quote=chun]Fico aqui me perguntando… se C++ é tão maravilhoso… prq não programamos todos para C++ na web ?

Outra coisa que não entendo : http://br-linux.org/2010/crescimento-faz-twitter-trocar-o-mysql-pelo-cassandra

Prq eles nao desenvolvem em C++ tudo ? PARA QUE FICAR UTILIZANDO JAVA ? VIVA !

PS: Olha que legal , aqui posso editar as minhas mensagens !!! Agora fico tão hacker quanto o Augusto do Br-Linux
[/quote]

Porque na Web o Java leva vantagem… como o C++ leva vantagem pra hardwares especificos… ( Ou nao :roll: )

Ué , o Twitter tem um hardware bem espcifico… eles poderiam ter todo o poder do C++

Fico aqui imaginando prq eles nao querem este poder…

Hummm Hummmm

[quote=chun]Fico aqui me perguntando… se C++ é tão maravilhoso… prq não programamos todos para C++ na web ?
Outra coisa que não entendo : http://br-linux.org/2010/crescimento-faz-twitter-trocar-o-mysql-pelo-cassandra
Prq eles nao desenvolvem em C++ tudo ? PARA QUE FICAR UTILIZANDO JAVA ? VIVA !

PS: Olha que legal , aqui posso editar as minhas mensagens !!! Agora fico tão hacker quanto o Augusto do Br-Linux
[/quote]

Por que alguém sempre faz essa pergunta idiota quando alguém aparece falando das situações em que o C++ é mais vantajoso?

Não se programa em C++ para tudo pelo mesmo motivo que você não deve programar em Java para tudo. Simples assim.

O C++ é mais otimizável que o Java, porém, para aplicações comerciais comuns, o custo dessa característica é alto demais para compensar o eventual benefício.

A notícia que você postou também é um péssimo exemplo. Ela compara o MySQL, que é feito em C++, com um BD Java que usa uma tecnologia diferente da relacional. Ou seja, diferenças de performance aí não estão relacionadas à linguagem e sim aos algoritmos utilizados.

Até onde eu sei, ninguém do Twitter está programando o BD que eles mesmo usam. Também não me parece que um hardware específico e otimizado seja fator de sucesso para o twitter. Afinal, é mais barato e rápido investir em comprar mais hardware genérico, ao invés de simplesmente fazer um software usar todos os recursos dos equipamentos que eles tem.

[quote=chun]Ué , o Twitter tem um hardware bem espcifico… eles poderiam ter todo o poder do C++

Fico aqui imaginando prq eles nao querem este poder…

Hummm Hummmm[/quote]

Resposta nesse mesmo tópico:

[quote=ViniGodoy]benchmarks geralmente são de códigos quase 100% matemáticos, o que deve ser a realidade de no máximo 1% das pessoas do fórum.

No geral, em aplicações comerciais, gargalos de performance estão em outros locais, geralmente relacionados a I/O: Banco de dados, rede, leitura de arquivos. Existe problemas também por erros de software, como escolher a estrutura de dados errada.[/quote]

No caso existem gargalos no Banco de Dados (que, aliás, são feitos em C ou C++), na conexão, leitura de arquivos. Assim toda a vantagem em performance do C++ se torna menos importante.

No caso do Twitter, veja essa página e perceba como eles usam, sim, C++ quando eles acham mais conveniente.

[quote=ViniGodoy][quote=chun]Fico aqui me perguntando… se C++ é tão maravilhoso… prq não programamos todos para C++ na web ?
Outra coisa que não entendo : http://br-linux.org/2010/crescimento-faz-twitter-trocar-o-mysql-pelo-cassandra
Prq eles nao desenvolvem em C++ tudo ? PARA QUE FICAR UTILIZANDO JAVA ? VIVA !

PS: Olha que legal , aqui posso editar as minhas mensagens !!! Agora fico tão hacker quanto o Augusto do Br-Linux
[/quote]

Por que alguém sempre faz essa pergunta idiota quando alguém aparece falando das situações em que o C++ é mais vantajoso?

Não se programa em C++ para tudo pelo mesmo motivo que você não deve programar em Java para tudo. Simples assim.

O C++ é mais otimizável que o Java, porém, para aplicações comerciais comuns, o custo dessa característica é alto demais para compensar o eventual benefício.

A notícia que você postou também é um péssimo exemplo. Ela compara o MySQL, que é feito em C++, com um BD Java que usa uma tecnologia diferente da relacional. Ou seja, diferenças de performance aí não estão relacionadas à linguagem e sim aos algoritmos utilizados.[/quote]

Vini,

Idiota é a conclusao que quem lê esta thread chega… Aqui tem um monte de exemplos confusos e puxando cada um para sua sardinha…

A noticia que eu postei é um belo exemplo de um pessoal que antes tinha uma arquitetura dita “ideal aos projetos do novo milenio” e agora esta correndo dela… indo tudo para java…

Se voce analisar simploriamente o contexto da noticia vai chegar a esta sua conclusao… se voce perceber o que estou me referindo a PLATAFORMA e nao a apenas uma linguagem , ai voce percebe o que eu quero dizer

Quanto ao algoritimo nao me venha com churumelas… existem dezenas de aplicativos implementando MapReduce em C++… e mesmo assim optaram por Java.

Até onde eu sei, ninguém do Twitter está programando o BD que eles mesmo usam. Também não me parece que um hardware específico e otimizado seja fator de sucesso para o twitter. Afinal, é mais barato e rápido investir em comprar mais hardware genérico, ao invés de simplesmente fazer um software usar todos os recursos dos equipamentos que eles tem.[/quote]

E isso se aplica quando seu nivel de inclusao de novos registros pula de 2 milhoes para 50 milhoes ao dia ?

Até onde eu sei, ninguém do Twitter está programando o BD que eles mesmo usam. Também não me parece que um hardware específico e otimizado seja fator de sucesso para o twitter. Afinal, é mais barato e rápido investir em comprar mais hardware genérico, ao invés de simplesmente fazer um software usar todos os recursos dos equipamentos que eles tem.[/quote]

E hardware especifico só posso utilizar quando eu faço tudo do zero ? Complicado hein ?

[quote=juliofsn][quote=chun]Ué , o Twitter tem um hardware bem espcifico… eles poderiam ter todo o poder do C++

Fico aqui imaginando prq eles nao querem este poder…

Hummm Hummmm[/quote]

Resposta nesse mesmo tópico:

[quote=ViniGodoy]benchmarks geralmente são de códigos quase 100% matemáticos, o que deve ser a realidade de no máximo 1% das pessoas do fórum.

No geral, em aplicações comerciais, gargalos de performance estão em outros locais, geralmente relacionados a I/O: Banco de dados, rede, leitura de arquivos. Existe problemas também por erros de software, como escolher a estrutura de dados errada.[/quote]

No caso existem gargalos no Banco de Dados (que, aliás, são feitos em C ou C++), na conexão, leitura de arquivos. Assim toda a vantagem em performance do C++ se torna menos importante.

No caso do Twitter, veja essa página e perceba como eles usam, sim, C++ quando eles acham mais conveniente.[/quote]

No caso eles estão migrando aos poucos toda sua plataforma , hoje é um emaranhado de solucoes juntas tentando driblar as dificuldades da opcao que eles fizeram (utilizar Ruby) para este projeto faraonico…

O que quero dizer que quanto mais a coisa aperta , mais eles estão correndo para a plataforma Java.
é só voce ler na linha do tempo… como eles iniciaram e aonde eles estão.

Voe leu quantos projetos eles tem C/C++ ? Por favor… um moduluzinho aqui , outro ali… coisa josé…
Viu a quantidade em Java e quantidade de coisas em Ruby ?

[quote=chun]Idiota é a conclusao que quem lê esta thread chega… Aqui tem um monte de exemplos confusos e puxando cada um para sua sardinha…

A noticia que eu postei é um belo exemplo de um pessoal que antes tinha uma arquitetura dita “ideal aos projetos do novo milenio” e agora esta correndo dela… indo tudo para java…

Se voce analisar simploriamente o contexto da noticia vai chegar a esta sua conclusao… se voce perceber o que estou me referindo a PLATAFORMA e nao a apenas uma linguagem , ai voce percebe o que eu quero dizer

Quanto ao algoritimo nao me venha com churumelas… existem dezenas de aplicativos implementando MapReduce em C++… e mesmo assim optaram por Java.
[/quote]

O java, pelo que a notícia dá claramente a entender, é um detalhe menor. Não foi o fator de tomada de decisão. Optaram por essa tecnologia por ela ser melhor que a relacional e por ser livre. Não por ser feita em Java. Aliás, foram raras as vezes que sequer me perguntei em que linguagem um BD foi implementado ao escolhe-lo. Geralmente escolhemos um BD por outras características, como as citadas no artigo.

Além disso, discussões sobre que plataforma é melhor não estão no assunto dessa thread. Até então, ninguém quer convencer ninguém a usar Java ou C++. Estamos questionando sobre performance em Java. E, felizmente, a conclusão está sendo de que a performance da plataforma é excelente, e que são raras exceções, e bem específicas, onde alguém teria que investir em toda complicação do C++.

[quote=ViniGodoy][quote=chun]Idiota é a conclusao que quem lê esta thread chega… Aqui tem um monte de exemplos confusos e puxando cada um para sua sardinha…

A noticia que eu postei é um belo exemplo de um pessoal que antes tinha uma arquitetura dita “ideal aos projetos do novo milenio” e agora esta correndo dela… indo tudo para java…

Se voce analisar simploriamente o contexto da noticia vai chegar a esta sua conclusao… se voce perceber o que estou me referindo a PLATAFORMA e nao a apenas uma linguagem , ai voce percebe o que eu quero dizer

Quanto ao algoritimo nao me venha com churumelas… existem dezenas de aplicativos implementando MapReduce em C++… e mesmo assim optaram por Java.
[/quote]

O java, pelo que a notícia dá claramente a entender, é um detalhe menor. Não foi o fator de tomada de decisão. Optaram por essa tecnologia por ela ser melhor que a relacional e por ser livre. Não por ser feita em Java. Aliás, foram raras as vezes que sequer me perguntei em que linguagem um BD foi implementado ao escolhe-lo. Geralmente escolhemos um BD por outras características, como as citadas no artigo. [/quote]

É verdade ? E por que não uma implementacao do mesmo algoritmo em C++ ? ou C.
Eu sempre me pergunto em qual plataforma/e/ou/linguagem foi feito um pedaço tão importante de um aplicativo… é essecial para tomada de decioes como um todo.

[quote=ViniGodoy]
Além disso, discussões sobre que plataforma é melhor não estão no assunto dessa thread. Até então, ninguém quer convencer ninguém a usar Java ou C++. Estamos questionando sobre performance em Java. E, felizmente, a conclusão está sendo de que a performance da plataforma é excelente, e que são raras exceções, e bem específicas, onde alguém teria que investir em toda complicação do C++.[/quote]

Opa ! Era isso que eu gostaria de ler da sua parte… quem lê todos os seus posts nesta thread não parece que voce tenha reconhecido isso.

Não mesmo? Então que tal ler esse post?
http://www.guj.com.br/posts/list/45/198295.java#996969

Ou esse aqui?
http://www.guj.com.br/posts/list/30/198295.java#996671

Ou ainda esse?
http://www.guj.com.br/posts/list/75/198295.java#997948

Eu só acho que o povo que curte Java também fala muita besteira em relação ao C++. Eu programo há vários anos nas duas linguagens, muitos deles com sistemas de tempo real. E as duas tem pontos fortes e fracos.