So di aver sentito abbastanza spesso che C in genere ha un vantaggio in termini di prestazioni rispetto a C ++. Non ci ho pensato nient'altro fino a quando mi sono reso conto che MSVC non sembra nemmeno supportare il più recente standard di C, ma il più recente lo supporta C99 (per quanto ne so).
Avevo intenzione di scrivere una libreria con del codice da renderizzare in OpenGL in modo da poterlo riutilizzare. Avevo intenzione di scrivere la libreria in C poiché qualsiasi aumento delle prestazioni è il 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 produrrebbe anche una piccola differenza nelle prestazioni, probabilmente andrei con C.
Si può anche notare che questa libreria sarebbe qualcosa che farei funzionare su Windows / OS X / Linux e probabilmente compilerei tutto nativamente (MSVC per Windows, Clang o GCC per OS X e GCC per Linux .. .o forse i compilatori Intel per tutto).
Mi sono guardato intorno e ho trovato alcuni parametri di riferimento e simili, ma tutto ciò che ho visto ha avuto a che fare con GCC piuttosto che con MSVC e Clang. Inoltre, i parametri di riferimento non menzionano gli standard delle lingue utilizzate. Qualcuno ha qualche idea su questo?
MODIFICARE: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 ponendo questa domanda in C ++. Ho iniziato un altro progetto nello stesso periodo in C mentre cercavamo di ottenere qualsiasi piccola prestazione possibile e avevo 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 di stringhe. Conoscevo le capacità per questo nella libreria standard C ++ e alla fine giunsi alla conclusione che quelle strutture nella libreria standard avrebbero probabilmente 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 per essere collegabili in C è stato facilmente soddisfatto scrivendo un'interfaccia C nel codice C ++, che è stato fatto rapidamente con tipi opachi. Riscrivere la libreria in C ++ sembrava andare molto più veloce rispetto a quando la scrivevo in C ed era meno soggetta a bug, in particolare a perdite di memoria. Sono stato anche in grado di utilizzare la libreria di threading della libreria standard, che è stata molto più semplice rispetto alle implementazioni specifiche della piattaforma. Alla fine, credo che scrivere la libreria in C ++ abbia portato grandi benefici con un possibile costo di prestazione. Non ho ancora fatto il benchmark della versione C ++, ma credo che possa anche essere possibile che abbia ottenuto alcune prestazioni usando strutture di dati di libreria standard rispetto a quelle che ho scritto. Credo che scrivere la libreria in C ++ abbia portato a grandi benefici con un possibile costo di prestazione ridotto. Non ho ancora fatto il benchmark della versione C ++, ma credo che possa anche essere possibile che abbia ottenuto alcune prestazioni usando strutture di dati di libreria standard rispetto a quelle che ho scritto. Credo che scrivere la libreria in C ++ abbia portato a grandi benefici con un possibile costo di prestazione ridotto. Non ho ancora fatto il benchmark della versione C ++, ma credo che possa anche essere possibile che abbia ottenuto alcune prestazioni usando strutture di dati di libreria standard rispetto a quelle che ho scritto.