So di aver sentito abbastanza spesso che C ha in genere un vantaggio in termini di prestazioni rispetto al C ++. Non ho davvero pensato ad altro fino a quando non ho capito che MSVC non sembra nemmeno supportare il nuovo standard di C, ma il più recente lo supporta C99 (per quanto ne so).
Stavo pensando di scrivere una libreria con del codice da renderizzare in OpenGL in modo da poterla riutilizzare. Stavo progettando di scrivere la libreria in C poiché qualsiasi aumento delle prestazioni è benvenuto quando si tratta di grafica.
Ma ne varrebbe davvero la pena? Il codice che utilizza la libreria verrebbe probabilmente scritto in C ++ e preferisco codificare in C ++ in generale.
Tuttavia, se producesse anche una piccola differenza nelle prestazioni, probabilmente andrei con C.
Si può anche notare che questa libreria sarebbe qualcosa che avrei fatto funzionare su Windows / OS X / Linux, e probabilmente compilerei tutto in modo nativo (MSVC per Windows, Clang o GCC per OS X e GCC per Linux ... o forse i compilatori di Intel per tutto).
Mi sono guardato attorno e ho trovato alcuni benchmark e simili, ma tutto ciò che ho visto si è occupato di GCC piuttosto che di MSVC e Clang. Inoltre, i parametri di riferimento non menzionano gli standard delle lingue utilizzate. Qualcuno ha qualche idea su questo?
EDIT: volevo solo condividere il mio punto di vista su questa domanda dopo un paio d'anni di esperienza in più. Ho finito per scrivere il progetto per cui stavo facendo questa domanda in C ++. Ho iniziato un altro progetto nello stesso periodo in C perché stavamo cercando di ottenere una piccola quantità di prestazioni che potevamo e avevamo bisogno che il progetto fosse collegabile in C. Un paio di mesi fa, ho raggiunto il punto in cui avevo davvero bisogno di mappe e avanzato manipolazione delle stringhe. Conoscevo le capacità di questo nella libreria standard del C ++ e alla fine giunsi alla conclusione che quelle strutture nella libreria standard avrebbero sovraperformato e sarebbero state più stabili delle mappe e delle stringhe che avrei potuto implementare in C in un ragionevole lasso di tempo. Il requisito di essere collegabili in C è stato facilmente soddisfatto scrivendo un'interfaccia C sul codice C ++, che è stata eseguita rapidamente con tipi opachi. Riscrivere la libreria in C ++ sembrava andare molto più veloce rispetto a quando lo scriveva in C ed era meno incline a bug, soprattutto perdite di memoria. Sono stato anche in grado di utilizzare la libreria di threading della libreria standard, che è stata molto più semplice rispetto all'utilizzo di implementazioni specifiche della piattaforma. Alla fine, credo che scrivere la libreria in C ++ abbia portato grandi benefici con possibilmente un piccolo costo di prestazioni. Non ho ancora analizzato la versione C ++, ma credo che potrebbe anche essere possibile ottenere delle prestazioni utilizzando le strutture di dati della libreria standard rispetto a quelle che ho scritto.