Pergunta

Escrevendo aplicações rápido nativas, com chamadas de API e etc, em uma linguagem de programação moderna cruz plataforma como C # seria fantástico, não é? Por exemplo, se você quer escrever um utilitário simples para ajudar o pessoal de TI com a instalação de coisas, que não precisaria de mais componentes, em uma linguagem de programação fácil e moderna? ou se você quer escrever um jogo 3D, deve ser rápido, e JIT seria apenas torná-lo mais lento ...

Por que, por que não é possível? Por que não existem linguagens de programação modernas nativos para essas coisas?

Foi útil?

Solução

C # e .Net são código nativo. Eu acho que você não entendeu o jitter. Não é uma VM. Um programa C # é compilado para código totalmente nativa antes de qualquer um que é executado.

Agora, a "precisar de outros componentes" parte é uma preocupação. Dê um tempo, no entanto. Você vai ser duramente pressionado para encontrar uma instalação do Windows estes dias sem pelo menos Net 2.0, e até mesmo um casal principais distribuições Linux incluem mono fora da caixa.

Outras dicas

Não assuma o JIT torna as coisas mais lento. O JIT pode otimizar para o computador exato execução do aplicativo em vez de um computador genérico como um 386 ou Pentium. Ele pode até mesmo fazer melhor velocidade / memória trade-off decisões quando gerar o código porque ele sabe exatamente o que está disponível. E se JIT ainda torna as coisas mais lento, você pode Ngen-los para que JITting tudo é feito de antemão.

Como prova disso, considere que Quake foi portado para o CLR um par de vezes, e em meus testes pessoais, os quadros por segundo foram mais rápido quando executado Quake sobre o CLR cerca de metade das vezes I demonstração-lo.

programas .NET compilados foram mostrados para ser executado tão rapidamente como C. Se você quer que ele escreve ultra-magro-lo em conjunto para o seu processador nativo.

Você pode usar a ferramenta Microsoft ngen.exe para criar uma imagem nativa de um .NET assembly. Consulte MSDN NGEN documentação . Microsoft já embora sobre o que você está chegando aqui.

A Microsoft também faz ILMerge. ferramenta de EXE para mesclar vários arquivos de montagem em um. Esta fronteira poder de optimização e velocidade também.

Como uma nota lateral, Mono tem à frente cheio de compilação tempo, eliminando o tempo de execução. (Eu acho que é como eles se afastar em execução no iPhone, que proíbe qualquer JIT).

Então, isso significa que poderíamos compilar totalmente e vincular um programa C # usando (limitado) .NET chama em um EXE autônomo que seria executado sem .NET sendo instalado em tudo?

FYI: Verificar a propriedade do servidor de cerca de 5000 servidores revelou cerca de 200 sem sequer .NET 2.0

.

Isso causa problemas para o código que deve ser executado em "todas as instâncias do Windows". Com o .NET 4.0 + não incluindo 2.0 esta piora à medida que ambas as máquinas Windows novos e antigos podem não ter o 'direito' .NET

Não há, C. C pode ser usado para escrever qualquer aplicação, nunca !!!

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