Eu sei que ouvi muitas vezes que C normalmente tem uma vantagem de desempenho sobre C ++. Eu realmente não pensei em mais nada até perceber que o MSVC nem parece suportar o mais novo padrão de C, mas o mais novo é compatível com o C99 (tanto quanto eu sei).
Eu estava pensando em escrever uma biblioteca com algum código para renderizar no OpenGL para poder reutilizá-la. Eu estava planejando escrever a biblioteca em C, pois qualquer aumento de desempenho é bem-vindo quando se trata de gráficos.
Mas valeria mesmo a pena? O código que usa a biblioteca provavelmente seria escrito em C ++ e eu prefiro codificar em C ++ em geral.
No entanto, se isso produzisse uma pequena diferença no desempenho, eu provavelmente iria com C.
Também é possível notar que essa biblioteca seria algo que eu faria para funcionar no Windows / OS X / Linux e provavelmente compilaria tudo de forma nativa (MSVC para Windows, Clang ou GCC para OS X e GCC para Linux .. .ou possivelmente compiladores da Intel para tudo).
Eu olhei em volta e encontrei alguns benchmarks e tal, mas tudo o que vi lidou com o GCC, e não com o MSVC e o Clang. Além disso, os benchmarks não mencionam os padrões dos idiomas usados. Alguém tem alguma opinião sobre isso?
EDITAR:Eu só queria compartilhar meu ponto de vista sobre essa questão depois de mais alguns anos de experiência. Acabei escrevendo o projeto para o qual estava fazendo essa pergunta em C ++. Comecei outro projeto na mesma época em C, quando procurávamos obter uma pequena quantidade de desempenho possível e precisávamos que o projeto fosse vinculado em C. Há alguns meses, cheguei ao ponto em que realmente precisava de mapas e avançava manipulação de cordas. Eu conhecia as habilidades para isso na biblioteca padrão C ++ e, finalmente, cheguei à conclusão de que essas estruturas na biblioteca padrão provavelmente teriam um desempenho superior e seriam mais estáveis do que mapas e seqüências de caracteres que eu poderia implementar em C em um período de tempo razoável. O requisito de ser vinculável em C foi facilmente atendido gravando uma interface C no código C ++, que foi feito rapidamente com tipos opacos. Reescrever a biblioteca em C ++ parecia ser muito mais rápido do que quando a escrevia em C e era menos propenso a erros, especialmente vazamentos de memória. Também pude usar a biblioteca de encadeamento de bibliotecas padrão, que foi muito mais fácil do que usar implementações específicas da plataforma. No final, acredito que escrever a biblioteca em C ++ levou a grandes benefícios com possivelmente um pequeno custo de desempenho. Ainda não comparei a versão C ++, mas acredito que seja possível que eu tenha ganho algum desempenho usando estruturas de dados de biblioteca padrão do que as que escrevi. Acredito que escrever a biblioteca em C ++ levou a grandes benefícios com possivelmente um pequeno custo de desempenho. Ainda não comparei a versão C ++, mas acredito que seja possível que eu tenha ganho algum desempenho usando estruturas de dados de biblioteca padrão do que as que escrevi. Acredito que escrever a biblioteca em C ++ levou a grandes benefícios com possivelmente um pequeno custo de desempenho. Ainda não comparei a versão C ++, mas acredito que seja possível que eu tenha ganho algum desempenho usando estruturas de dados de biblioteca padrão do que as que escrevi.