Pergunta

Eu estive pensando isso por um tempo. Por favor fornecer dados quantitativos para apoiar sua resposta.

Relacionado: Existe uma diferença significativa entre Windows, Mac e Linux JVM desempenho

?
Foi útil?

Solução

Shudo tem comparações done e libera código fonte para microbenchmarks como Linpack, Scimark, etc .

Os resultados das amostras para o Linpack:

text alt
(fonte: shudo.net )

Mas a última atualização durou mais de 5 anos atrás - aparentemente usando NET V1.0 ou v1.1, e principalmente usando JVM v1.4. Que significa que é vários lançamentos fora da data em Java e .NET. Você pode obter o código fonte e gerar seus próprios resultados.


Eu apenas fiz isso - linpack.java baixado e linpack.cs, compilado e correu-los. Eu costumava v1.6.0.11 Java da Sun, e C # 3.0 (3,5 compilador) da Microsoft. Tanto no Windows Vista.

Para um tamanho de problema Linpack de 2000, recebi 17.6s para a versão Java, 17.78s para a versão C #.

Então eu corri-lo novamente e tem 18.14s para Java, e 17,31 para C #.


O que você está medindo?

Isto ilustra alguns desafios na medição de desempenho e testes.

  • Primeiro:
    um único julgamento não é suficiente para tirar conclusões significativas. Normalmente, você deve medir muitos ensaios, e, em seguida, a média dos resultados.

  • Segundo:
    apenas o que você está medindo? Se você executar uma única tentativa de resolver um único problema, então o custo de iniciar o processo está incluído no tempo, assim como o tempo JIT, e qualquer custo para preencher quaisquer buffers. Isto pode ou não ser o que você realmente deseja medir.

    Em muitos casos, é a steady-state perf você quer medir. Por exemplo, em um processo de servidor, você iniciá-lo uma vez e ele é executado por meses. Portanto, o custo inicial é desprezível, eo que você quer para medir e otimizar para é pedido rendimento dado um tempo médio de resposta mínimo. Ou em uma "Fat Cliente", o que você quer é o tempo necessário para fazer o processamento de vídeo, e você não quer medir custos de arranque do processo.

  • Em terceiro lugar:
    qual é a carga de trabalho? Linpack e Scimark pode ser interessante se você fizer um monte de matemática de ponto flutuante. Mas e se você não faz? E se você faz muita destruição XML, ou análise de cadeia, ou matemática inteiro, ou a interação de banco de dados, ou geração de páginas HTML. E se o seu código faz lotes de gerenciamento de threads, ou usos primitivos thread-sincronização? E sobre as comunicações e IO? E se uma parte essencial de uma transação é a criptografia, ou de criação de assinatura digital e verificação? Esses benchmarks não vai dizer nada sobre os outros cenários. Por essa razão, você pode chamá-los de micro-benchmarks.

    Você precisa de uma referência que corretamente modelos que você deseja avaliar.


Veja também:
Trivial problemas matemáticos como a linguagem benchmarks

Outras dicas

Confira A Linguagem Informática Shootout . Eles comparam várias línguas, e VMs, incluindo Mono e JVM .

Se você está olhando para o arranque velocidade, memória e utilização da CPU em desktops, este poderia ajudar, uma vez que está usando os últimos lançamentos em julho de 2010

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top