Este artigo explicita algumas razões pelas quais o desempenho do F # é ocasionalmente melhor que o C #. Ele diz que a seção "Primeiramente" que apenas o F # gera chamadas finais.
O que exatamente isso significa? E por que é um aumento de desempenho? Esta coisa pode realmente fazer ou quebrar entre F # e C # para o meu aplicativo de xadrez, que usa uma tonelada de recursão.
Respostas:
2 para resposta № 1O desempenho dependerá mais da maneira como vocêimplementar o seu programa que o idioma. F # pode gerar IL melhor para algumas coisas, enquanto o compilador C # será melhor para os outros. Ao escolher os idiomas, você deve considerar outras coisas em vez de apenas desempenho.
Se você está escrevendo seu programa de xadrez para aprender F #, experimente, é uma ótima linguagem, mas não espere programas super rápidos simplesmente porque você está usando uma linguagem funcional.
Edite para responder a nova pergunta:
O compilador F # realmente gera IL que tem o tail.
op código whareas o compilador C # doesn "t. Isso por si só não torna o F # mais rápido ou mais performático que o C #, como você pode ver na minha resposta original acima, mas pode realmente fazer uma diferença em seu aplicativo de xadrez específico, já que está afirmando que a recursão é muito usada.
Como uma nota lateral, o CLR pode gerar algumas otimizações de chamada de rabo mais simples durante o tempo de execução, assim, para funções mais simples em um ambiente x64, até mesmo IL gerado pelo compilador C # pode ter otimização de chamada final.