C가 C++보다 현저하게 빠릅니까?
스크립팅 언어 및 핵심 과학 프로그램은 보통 C로 작성됩니다.이것에 의해, 실장은 복잡해지지만, 곧바로 요점을 말할 수 있습니다.
퍼포먼스를 최대한으로 끌어내고 싶은 것은 이해하지만 C스트링과 C구조는 C++클래스를 사용하는 것과 실제 차이가 있습니까?C++는 같은 방법으로 동작하는 것 같습니다.가상함수와는 별도로 클래스 함수를 저장하고 그 클래스의 모든 인스턴스는 1개의 함수를 호출합니다.
무엇이 C를 더 빠르게 하는가? 그리고 python이나 sqlite와 같은 프로젝트에서 누가 가장 빨라야 하는지에 대한 주목할 만한 차이점이 있는가?
C++는 종종 과학 프로그램에 사용됩니다.그 도메인에서 C의 인기는 시들해질 수 있다.Fortran은 "저수준" 언어로 여전히 인기가 있습니다.
C++에서는, 「사용하는 것에 대해서만 지불한다」라고 합니다.그래서 C보다 느린 것은 없습니다.특히 과학 프로그램의 경우 표현식 템플릿은 템플릿엔진을 사용하여 프로그램 시멘틱스를 처리하는 커스텀 최적화를 실행할 수 있습니다.
Python과 같은 프로젝트에서 C가 선호되는 이유는 C가 읽기에 덜 혼란스러운 경향이 있기 때문에 큰 코드베이스가 더 많은 기여자 풀에 접근하기 쉽기 때문입니다.
SQLite에는 작은 실행 가능 코드사이즈가 필요합니다만, C에는 약간의 엣지가 있습니다.C++를 현명하게 사용하면 임베디드 어플리케이션에서 사용할 수 있지만 불필요한 언어 기능이 슬금슬금 유입될 우려가 있기 때문에 그다지 인기가 없습니다.
그 이유는 성능보다는 상호 운용성과 관련이 있다고 생각합니다.C++언어는 C언어보다 복잡하지만 퍼포먼스의 관점에서 보면 어느 쪽이든 큰 차이는 없습니다.C++ C 보다 빠릅니다(C++ 컨스트럭트는 C 등가보다 ).std::sort보다 빠르다qsort)와 그 반대의 좋은 예가 있을 것입니다.
EDIT: On the interoperability side...
기본적으로 C++ 규격에서는 다른 컴파일러/버전으로 작성된 바이너리 간의 상호 운용성을 위해 필요한 것은 정의되어 있지 않습니다.여기서 가장 주목할 만한 문제는 이진법 기호 명명 규칙입니다.C에서 언어는 코드의 각 기호에서 바이너리 기호 이름으로의 단일 매핑을 정의합니다.라고 하는 함수my_function라는 이름의 바이너리 기호를 만듭니다.my_function한편, 함수 오버로드 등의 기능으로 인해 C++ 함수의 이름은 magling(바이너리 내의 다른 함수 기호로 변환, 인수 타입과 반환 타입의 부호화)되어야 하며, 표준에서는 magling의 실행 방법을 정의하지 않습니다.즉, C++의 동일한 함수를 컴파일러에 따라 다른 기호로 컴파일할 수 있습니다(단,extern "C"는, C++ 의 이러한 기능에 대해서 C 의 상호 운용성을 강제하기 위해서 사용됩니다.
At the end of the day, the interface between the scripting language and the native code would have to be a C interface anyway, even if the details of how it is implemented internally could be C/C++/any other native language.
(I am intentionally not wanting to enter into a flame war of language prefences, C++ is really powerful, but it is also a bit scary as it is a much more complex language than C, and some things that look simple might have an impact on performance)
As Bjarne mentioned in [D&E] the effectiveness is one of the main goals of C++. So C++ is slower only when programmer uses its "extra" functions like virtual functions you mentioned, rtt information etc
So I think it is more of psychological reasons - C is used as it doesn't allow "slow" C++ features.
Languages are not inherently faster or slower, interpreters and compilers might be more or less efficient.
Besides that, higher level languages provide abstraction layers that usually have a runtime cost. If you are not using them, the compiler might be smart enough to strip them out, but that might not be possible if the semantics of the language do not allow to do it safely... And if you need them, implementing them by yourself in a lower level language will be probably slower than using the "slow" language.
언급URL : https://stackoverflow.com/questions/6955114/is-c-notably-faster-than-c
'programing' 카테고리의 다른 글
| 인스턴스에서 컴포넌트에 액세스하는 VueJ (0) | 2022.07.17 |
|---|---|
| 서드파티 라이브러리를 사용한 VueJ 인쇄 요소 (0) | 2022.07.17 |
| Vue 컴포넌트의 구조는 어떻게 해야 합니까?어떤 순서로 기능을 추가해야 합니까? (0) | 2022.07.17 |
| vue의 사용자 지정 지시문에 대한 수정자 (0) | 2022.07.17 |
| 로컬 구성 요소 데이터가 Vuex 상태를 변경하지 않아야 할 때 변경 (0) | 2022.07.16 |