Я знаю, что довольно часто слышал, что C обычно имеет преимущество в производительности по сравнению с C ++. Я не думал больше об этом, пока не понял, что MSVC, похоже, даже не поддерживает новейший стандарт C, но поддерживает новейший C99 (насколько я знаю).
Я планировал написать библиотеку с некоторым кодом для визуализации в OpenGL, чтобы я мог использовать его повторно. Я планировал написать библиотеку на C, так как любое повышение производительности приветствуется, когда дело доходит до графики.
Но стоит ли это того? Код, использующий библиотеку, вероятно, будет написан на C ++, и я предпочитаю кодировать на C ++ в целом.
Однако, если это приведет к небольшой разнице в производительности, я, скорее всего, остановлюсь на C.
Можно также отметить, что эту библиотеку я бы использовал для работы в Windows / OS X / Linux, и я, скорее всего, скомпилирую все изначально (MSVC для Windows, Clang или GCC для OS X и GCC для Linux). или, возможно, компиляторы Intel для всего).
Я посмотрел вокруг и нашел несколько тестов и тому подобное, но все, что я видел, касалось GCC, а не MSVC и Clang. Кроме того, в тестах не упоминаются стандарты используемых языков. У кого-нибудь есть мысли по этому поводу?
РЕДАКТИРОВАТЬ:Я просто хотел поделиться своей точкой зрения на этот вопрос после пары лет опыта. Я закончил тем, что написал проект, для которого я задавал этот вопрос на C ++. Примерно в то же время я начал другой проект в C, так как мы стремились добиться какой-то небольшой производительности, которую мы могли бы и хотели, чтобы проект был связываемым в C. Пару месяцев назад я достиг той точки, когда мне действительно нужны карты и расширенные возможности. манипуляции со струнами. Я знал о возможностях для этого в стандартной библиотеке C ++ и в итоге пришел к выводу, что эти структуры в стандартной библиотеке, вероятно, будут превосходить и быть более стабильными, чем карты и строки, которые я мог бы реализовать в C за разумное количество времени. Требование быть связываемым в C было легко выполнено путем написания интерфейса C для кода C ++, что было быстро выполнено с непрозрачными типами. Переписывание библиотеки в C ++, казалось, прошло намного быстрее, чем при написании ее на C, и было менее подвержено ошибкам, особенно утечкам памяти. Я также смог использовать стандартную библиотеку потоков библиотеки, которая была намного проще, чем использование реализаций для конкретной платформы. В конце концов, я считаю, что написание библиотеки на C ++ привело к большим преимуществам, возможно, с небольшими затратами на производительность. Я еще не тестировал версию C ++, но я полагаю, что даже возможно, что я достиг некоторой производительности, используя стандартные структуры данных библиотеки, чем те, которые я написал. Я полагаю, что написание библиотеки на C ++ привело к большим преимуществам с, возможно, небольшой производительностью. Я еще не тестировал версию C ++, но я полагаю, что даже возможно, что я достиг некоторой производительности, используя стандартные структуры данных библиотеки, чем те, которые я написал. Я полагаю, что написание библиотеки на C ++ привело к большим преимуществам с, возможно, небольшой производительностью. Я еще не тестировал версию C ++, но я полагаю, что даже возможно, что я достиг некоторой производительности, используя стандартные структуры данных библиотеки, чем те, которые я написал.