/ / O que é uma chamada F #? Por que é um aumento de desempenho em relação ao C #? [fechado] - c #, f #, xadrez

O que é uma chamada final do F #? Por que é um aumento de desempenho em relação ao C #? [fechado] - c #, f #, xadrez

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 № 1

O 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.