나는 C가 일반적으로 C ++보다 성능 이점이 있다고 들었습니다. MSVC가 최신 표준 C를 지원하지 않는 것 같지만 최신 C99를 지원한다는 사실을 알기 전까지는 다른 생각은 없었습니다.
OpenGL에서 렌더링 할 코드를 사용하여 라이브러리를 작성하여 재사용 할 수 있도록 계획하고있었습니다. 그래픽과 관련하여 성능 향상을 환영하므로 C로 라이브러리를 작성하려고했습니다.
그러나 정말로 가치가 있습니까? 라이브러리를 사용하는 코드는 C ++로 작성되었을 가능성이 높으며 일반적으로 C ++로 코딩하는 것을 선호합니다.
그러나 성능에 약간의 차이가 생길 경우 C로 갈 것입니다.
이 라이브러리는 Windows / OS X / Linux에서 작동하도록 만들 수 있으며 모든 것을 기본적으로 컴파일 할 것입니다 (Windows의 경우 MSVC, OS X의 경우 Clang 또는 GCC, Linux의 경우 GCC). 또는 인텔의 모든 컴파일러).
나는 주변을 둘러 보았고 벤치 마크 등을 찾았지만 내가 본 모든 것은 MSVC 및 Clang 대신 GCC를 다루었습니다. 또한 벤치 마크에는 사용 된 언어의 표준이 언급되어 있지 않습니다. 아무도 이것에 대해 생각이 있습니까?
편집하다:몇 년 동안 더 경험을 쌓은 후이 질문에 대한 견해를 나누고 싶었습니다. C ++ 에서이 질문을하는 프로젝트를 작성했습니다. 우리가 할 수있는 작은 양의 성능을 얻기 위해 C에서 같은 시간에 다른 프로젝트를 시작했고 C에서 프로젝트를 연결할 수 있어야했습니다. 문자열 조작. 나는 C ++ 표준 라이브러리 에서이 기능을 알고 있었고 결국 표준 라이브러리의 구조가 합리적인 시간에 C에서 구현할 수있는 맵과 문자열보다 성능이 우수하고 안정적 일 것이라는 결론에 도달했습니다. C에서 링크 가능해야하는 요구 사항은 C ++ 코드에 C 인터페이스를 작성하여 쉽게 충족 할 수있었습니다.이 인터페이스는 불투명 한 유형으로 빠르게 수행되었습니다. C ++로 라이브러리를 다시 작성하는 것은 C로 작성하는 것보다 훨씬 빠르며 버그, 특히 메모리 누수가 발생하기 쉽습니다. 또한 플랫폼 별 구현을 사용하는 것보다 훨씬 쉬운 표준 라이브러리 스레딩 라이브러리를 사용할 수있었습니다. 결국 C ++로 라이브러리를 작성하면 성능 비용이 약간 낮아 큰 이점을 얻을 수 있다고 생각합니다. 아직 C ++ 버전을 벤치마킹하지는 않았지만 필자가 작성한 것보다 표준 라이브러리 데이터 구조를 사용하여 성능을 얻었을 수도 있습니다. C ++로 라이브러리를 작성하면 성능이 약간 낮을 때 큰 이점이 있다고 생각합니다. 아직 C ++ 버전을 벤치마킹하지는 않았지만 필자가 작성한 것보다 표준 라이브러리 데이터 구조를 사용하여 성능을 얻었을 수도 있습니다. C ++로 라이브러리를 작성하면 성능 비용이 적을 때 큰 이점이 있다고 생각합니다. 아직 C ++ 버전을 벤치마킹하지는 않았지만 필자가 작성한 것보다 표준 라이브러리 데이터 구조를 사용하여 성능을 얻었을 수도 있습니다.