Programação  
 
Rede de conhecimento computador >> Programação >> Programação De Computador Idiomas >> Content
Qual linguagem de programação, Fortran ou C, oferece melhor desempenho em termos de velocidade?
Historicamente, fortran Geralmente foi considerado para oferecer um melhor desempenho para a computação científica e numérica, especialmente para tarefas específicas, como álgebra linear e operações baseadas em matrizes. No entanto, a realidade é mais sutil e A resposta depende de vários fatores :

Argumentos para o desempenho potencialmente melhor de Fortran:

* projetado para computação numérica: A Fortran foi projetada especificamente para cálculos científicos e de engenharia. Sua sintaxe e semântica geralmente são mais naturais para expressar esses tipos de problemas. As versões iniciais tinham suporte direto para números complexos, operações de matriz e outros recursos críticos para os códigos científicos.
* otimização do compilador: Os compiladores fortran foram historicamente otimizados para operações numéricas, particularmente na manipulação da matriz e na otimização de loop. Os compiladores geralmente empregam técnicas como desenrolar o loop, a vetorização e a paralelagem automática de maneira mais agressiva em Fortran. Essas otimizações exploram recursos de hardware, como instruções SIMD (instrução única, múltiplos dados) com mais eficiência.
* suposições de alias: Os compiladores fortran geralmente podem fazer suposições mais fortes sobre o alias de memória (quando dois ponteiros podem se referir ao mesmo local de memória). O Fortran restringe o alias mais por padrão do que C. Isso permite que o compilador reordene e otimize o código de forma mais agressiva sem arriscar resultados incorretos. Em C, você precisa usar a palavra -chave `restritiva 'para obter suposições semelhantes de alias.
* Bibliotecas maduras: A Fortran tem uma longa história e muitas bibliotecas numéricas altamente otimizadas, como BLAs (subprogramas de álgebra linear básica), lapack (pacote de álgebra linear) e FFTW (transformada mais rápida de Fourier no oeste) são escritas em Fortran ou com interfaces fortran. Embora essas bibliotecas também sejam acessíveis a partir de C, usá -las diretamente da Fortran às vezes pode levar a uma melhor integração e menos sobrecarga.

Argumentos para o desempenho potencialmente melhor de C (ou pelo menos competitividade):

* Controle de baixo nível: C oferece controle de granulação muito mais fino sobre o gerenciamento da memória e os recursos de hardware. Os programadores qualificados podem explorar esse controle para otimizar o código para arquiteturas específicas, superando potencialmente o Fortran em alguns casos.
* Compiladores modernos: Os compiladores C modernos também são altamente sofisticados e capazes de realizar muitas das mesmas otimizações que os compiladores fortran. A lacuna na otimização do compilador diminuiu consideravelmente ao longo dos anos.
* Bibliotecas de vetorização : C também possui bibliotecas que fornecem acesso a instruções SIMD, como a Intrinsics e o néon da Intel. Usar isso requer mais esforço manual, mas pode levar a um excelente desempenho.
* ecossistema mais amplo: C possui um ecossistema muito maior e mais diversificado de bibliotecas e ferramentas. Isso pode ser uma vantagem para tarefas que vão além da computação numérica pura, como processamento de dados, E/S e interface com outros sistemas. C geralmente é uma escolha melhor quando você precisa integrar código numérico com outras partes de um sistema maior.
* Gerenciamento de memória: Embora o gerenciamento implícito de memória da Fortran seja frequentemente mais fácil de usar, o gerenciamento explícito de memória de C (com `Malloc` e` Free`) * pode * ser mais eficiente em cenários específicos, especialmente ao lidar com estruturas de dados complexas. (Mas também torna os vazamentos de memória e outros bugs relacionados à memória muito mais prováveis).

Considerações importantes:

* A habilidade do programador: O fator mais importante é frequentemente a habilidade do programador. Um programa C bem escrito geralmente pode superar um programa fortran mal escrito e vice-versa.
* O problema específico: O tipo de problema numérico sendo resolvido é crucial. O Fortran pode ser mais adequado para cálculos grandes baseados em matrizes, enquanto C pode ser mais eficiente para tarefas que exigem manipulação de memória de granulação fina ou estruturas de dados complexas.
* O compilador e sinalizadores de otimização: O compilador utilizado e os sinalizadores de otimização ativados podem ter um impacto significativo no desempenho. Experimente diferentes compiladores e configurações de otimização para encontrar a melhor combinação para seu código e hardware específicos.
* Complexidade do código: Embora o desempenho otimizado seja o objetivo, escrever o código com melhor desempenho geralmente não é prático devido a restrições de tempo. Portanto, a escolha entre C e Fortran geralmente depende do trade-off entre desempenho bruto e produtividade do desenvolvedor.

em resumo:

* Historicamente, e para algumas tarefas específicas de computação científica, a Fortran manteve uma vantagem de desempenho, principalmente devido à melhor otimização do compilador para código numérico e menos problemas de alias. Muitas bibliotecas científicas mais antigas (e até mais recentes) estão escritas em Fortran.
* Compiladores C modernos estão se atualizando e com codificação cuidadosa e o uso de bibliotecas de vetorização, C pode atingir um desempenho comparável ou até superior, especialmente para problemas que requerem controle ou integração de baixo nível com outros sistemas.
* A escolha entre Fortran e C deve ser baseada em uma avaliação completa do problema específico, da experiência do programador, das bibliotecas disponíveis e do nível de desempenho desejado.

Portanto, não há "vencedor" definitivo. É melhor avaliar os dois idiomas para o seu aplicativo específico para determinar qual deles fornece o melhor desempenho em seu contexto particular. Considere o perfil do seu código para identificar gargalos e focar os esforços de otimização, onde eles terão o maior impacto.

Anterior :

Próximo :
  Os artigos relacionados
·Como programar uma Allen Bradley PLC 
·Como não efetuar login no XP com uma senha 
·Programação de Computadores em cartões de perfurador…
·Como calcular a altura de um iFrame 
·O que é uma função desconhecida XSLT 
·Como você muda para a escrita árabe no Mac OS X? 
·Noções básicas de programação de computador 
·Como retornar uma String de uma classe 
·Qual é o significado de um Diagrama de Fluxo de Dados 
·Como adicionar uma caixa de listagem 
  Artigos em destaque
·PHP e Formação DVD 
·Como Desativar um elemento de uma matriz 
·Como lançar um Shell De VBS 
·Como converter uma matriz binária em um String em Java…
·Como ocultar um programa no AppleScript 
·Como inserir em um banco de dados com um menu drop -dow…
·Como fazer software de segurança em VB.Net 
·Qual é o valor l no programa c? 
·Como executar Servlets Java 
·Como usar FormatDateTime Com RDLC 
Cop e direita © Rede de conhecimento computador https://ptcomputador.com Todos os Direitos Reservados