Eu encontrei uma resposta no link sobre por que algumas linguagens são mais rápidas e outras mais lentas, espero que isso esclareça mais sobre por que C ou C ++ é mais rápido que outros. Existem outras linguagens também que são mais rápidas que C, mas não podemos use todos eles. Alguma explicação -
Uma das grandes razões pelas quais o Fortran permanece importante é porque é rápido: as rotinas de processamento de números escritas no Fortran tendem a ser mais rápidas que as rotinas equivalentes, escritas na maioria dos outros idiomas. As linguagens que estão competindo com o Fortran neste espaço - C e C ++ - são usadas porque são competitivas com esse desempenho.
Isso levanta a questão: por que? O que há no C ++ e no Fortran que os tornam mais rápidos e por que eles superam outras linguagens populares, como Java ou Python?
Interpretação versus compilação Há muitas maneiras de categorizar e definir linguagens de programação, de acordo com o estilo de programação que eles incentivam e os recursos que oferecem. Ao analisar o desempenho, a maior distinção é entre linguagens interpretadas e compiladas.
A divisão não é difícil; pelo contrário, há um espectro. Em uma extremidade, temos as linguagens compiladas tradicionais, um grupo que inclui Fortran, C e C ++. Nesses idiomas, há um estágio de compilação discreto que converte o código fonte de um programa em um formato executável que o processador pode usar.
Esse processo de compilação possui várias etapas. O código fonte é analisado e analisado. Erros básicos de codificação, como erros de digitação e ortografia, podem ser detectados neste momento. O código analisado é usado para gerar uma representação na memória, que também pode ser usada para detectar erros - desta vez, erros semânticos, como chamar funções que não existem ou tentar executar operações aritméticas em sequências de texto.
Essa representação na memória é então usada para acionar um gerador de código, a parte que produz código executável. A otimização do código, para melhorar o desempenho do código gerado, é executada em vários momentos nesse processo: otimizações de alto nível podem ser executadas na representação do código e otimizações de nível inferior são usadas na saída do gerador de código.
A execução do código acontece mais tarde. Todo o processo de compilação é simplesmente usado para criar algo que pode ser executado.
No extremo oposto, temos intérpretes. Os intérpretes incluirão um estágio de análise semelhante ao do compilador, mas isso será usado para direcionar a execução direta, com o programa sendo executado imediatamente.
O intérprete mais simples possui um código executável correspondente aos vários recursos suportados pelo idioma - portanto, ele terá funções para adicionar números, unir strings, qualquer que seja o idioma de um determinado idioma. À medida que analisa o código, ele pesquisa a função correspondente e a executa. As variáveis criadas no programa serão mantidas em algum tipo de tabela de pesquisa que mapeia seus nomes para seus dados.
O exemplo mais extremo do estilo do intérprete é algo como um arquivo em lotes ou um script de shell. Nessas linguagens, o código executável nem sempre é embutido no próprio intérprete, mas em programas independentes separados.
Então, por que isso faz diferença no desempenho? Em geral, cada camada de indireção reduz o desempenho. Por exemplo, a maneira mais rápida de adicionar dois números é ter esses dois números nos registradores no processador e usar as instruções de adição do processador. É o que os programas compilados podem fazer; eles podem colocar variáveis em registradores e tirar proveito das instruções do processador. Mas, em programas interpretados, essa mesma adição pode exigir duas pesquisas em uma tabela de variáveis para buscar os valores a serem adicionados e, em seguida, chamar uma função para executar a adição. Essa função pode muito bem usar a mesma instrução de processador usada pelo programa compilado para executar a adição real, mas todo o trabalho extra antes que a instrução possa realmente ser usada torna as coisas mais lentas.
Se você quiser saber mais, consulte a Fonte