Sé que he oído con bastante frecuencia que C generalmente tiene una ventaja de rendimiento sobre C ++. Realmente no pensé en nada más hasta que me di cuenta de que MSVC ni siquiera parece admitir el estándar más nuevo de C, pero el más nuevo lo admite C99 (que yo sepa).
Estaba planeando escribir una biblioteca con algún código para renderizar en OpenGL para poder reutilizarla. Estaba planeando escribir la biblioteca en C ya que cualquier aumento de rendimiento es bienvenido cuando se trata de gráficos.
¿Pero realmente valdría la pena? El código que usa la biblioteca probablemente se escribiría en C ++ y prefiero codificar en C ++ en general.
Sin embargo, si produjera incluso una pequeña diferencia en el rendimiento, probablemente iría con C.
También cabe señalar que esta biblioteca sería algo que haría que funcione en Windows / OS X / Linux, y probablemente compile todo de forma nativa (MSVC para Windows, Clang o GCC para OS X, y GCC para Linux .. .o posiblemente los compiladores de Intel para todo).
He mirado a mi alrededor y he encontrado algunos puntos de referencia y demás, pero todo lo que he visto ha tratado con GCC en lugar de MSVC y Clang. Además, los puntos de referencia no mencionan los estándares de los idiomas utilizados. ¿Alguno tiene alguna idea sobre esto?
EDITAR:Solo quería compartir mi punto de vista sobre esta pregunta después de un par de años más de experiencia. Terminé escribiendo el proyecto por el que hacía esta pregunta en C ++. Comencé otro proyecto más o menos al mismo tiempo en C, ya que estábamos buscando obtener una pequeña cantidad de rendimiento que pudiéramos y necesitábamos que el proyecto pudiera vincularse en C. Hace un par de meses, llegué al punto en el que realmente necesitaba mapas y avancé. manipulación de cuerdas. Conocía las habilidades para esto en la biblioteca estándar de C ++ y finalmente llegué a la conclusión de que esas estructuras en la biblioteca estándar probablemente superarían y serían más estables que los mapas y cadenas que podría implementar en C en un período de tiempo razonable. El requisito de ser enlazable en C se cumplió fácilmente escribiendo una interfaz C en el código C ++, que se realizó rápidamente con tipos opacos. Reescribir la biblioteca en C ++ parecía ir mucho más rápido que cuando se escribía en C y era menos propenso a errores, especialmente a pérdidas de memoria. También pude usar la biblioteca de subprocesos de biblioteca estándar, que ha sido mucho más fácil que usar implementaciones específicas de la plataforma. Al final, creo que escribir la biblioteca en C ++ generó grandes beneficios, posiblemente con un pequeño costo de rendimiento. Todavía no he comparado la versión de C ++, pero creo que incluso es posible que haya ganado algo de rendimiento al usar estructuras de datos de biblioteca estándar que las que escribí. Creo que escribir la biblioteca en C ++ generó grandes beneficios, posiblemente con un pequeño costo de rendimiento. Todavía no he comparado la versión de C ++, pero creo que incluso es posible que haya ganado algo de rendimiento al usar estructuras de datos de biblioteca estándar que las que escribí. Creo que escribir la biblioteca en C ++ generó grandes beneficios, posiblemente con un pequeño costo de rendimiento. Todavía no he comparado la versión de C ++, pero creo que incluso es posible que haya ganado algo de rendimiento al usar estructuras de datos de biblioteca estándar que las que escribí.