Um humilde benchmarking entre F#, C#, C++ e C

Olá Caríssimos…
Hoje gostaria de compartilhar um pouco da experiência que tive essa semana ao matar minha curiosidade em comparar a perfomance entre as linguagens C#, C, C++ e F#.
Bem, a linguagem F# é uma linguagem funcional, diferente das outras linguagens como C, C#, que são linguagens imperativas.
A diferença básica entre uma linguagem funcional e uma imperativa é que enquanto na primeira escrevemos o código em termos de funções matemáticas, dizendo ao compilador o que fazer, na segunda escrevemos o código como uma sequência lógica de passos dizendo como fazer.
Uma ótima refência pode ser encontrada aqui: http://rodrigovidal.net/?p=380 .

O que me motivou a fazer essa comparação foi a curiosidade de saber como as linguagens se comportariam em termos de perfomance, além de é claro, ter uma desculpa para estudar F#.

Você pode encontrar vários benchmarkings na internet e até achar este post repetitivo, mas não tem noção do sentimento em fazê-lo…

Para fazer esta comparação (benchmarking) escolhi as linguagens F#, C#,  C e C++, rodando um código que implementa a sequência de Fibonacci, que é interessante por utilizar recursividade. (http://pt.wikipedia.org/wiki/N%C3%BAmero_de_Fibonacci).

Mãos nos bits:

Todos os códigos foram compilados e executados em um Core I5 segunda geração, 6Gb de RAM em Windows 7 64 bits. (Configurei os compiladores para compilar em 32 bits).

Para compilar em C# e F# utilizei o Visual Studio 2010, equanto que para linguagem C utilizei o compilador GNU MinGW.  Para C++ utilizei o Visual Studio 2010 também, porém criei um projeto em C++ unmanaged para win32, não é o C++ .NET.

Resultados:

Fiz três testes, calculando os números de Fibonnaci entre de 1 à 30, 40 e 50.

O tempo de processamento em segundos foi de:

Algumas considerações:

  1.  Como podemos ver, F# foi a que teve melhor perfomance, e isso se justifica no fato da linguagem funcional ser a tampa da panela para cálculos e processamentos. Sua performance foi avassaladora em relação às outras, e isto porque estamos falando do .NET, imagino que outras linguagens funcionais devam ter perfomance maior.
  2. Me preocupei com a perfomance da linguagem C e C++, esperava um desempenho melhor do que a linguagem C#, embora esta tenha me surpreendido positivamente.
  3. O C++ da Microsoft também chateou, ficou atrás do C# na comparação, por esta não esperava. Será que fiz algo de errado ? Não esperava isto do C#, grande surpresa.

E agora José ?

Vejo uma linguagem funcional como F# muito útil quando precisamos desenvolver códigos que envolvam cálculos mátemáticos e processamentos pesados como funções, polinômios, regressões, matrizes, processamento de imagens, etc… Por isso, considere utilizá-la sempre que possível, você e seu usuário vão ganhar com isso.

Achei fácil o aprendizado da linguagem e implementar funções matemáticas fica muito fácil devido a proximidade da sintaxe.

Esse foi um teste humilde, muito mais pode ser feito para comparar as linguagens, na verdade fui muito raso na avaliação, mas já deu pra ter uma noção do mais importante.

Até a próxima !!!!

PS: Os códigos que criei podem ser baixados aqui: http://sdrv.ms/MtfhDG

Anúncios

, , , , , , , ,

  1. Deixe um comentário

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s

%d blogueiros gostam disto: