C는 왜 다른 언어보다 속도가 빠른가요?
속도가 빨라서 임베디드 시스템에 주로 쓰인다는데 어떤차이때문에 다른 언어보다 속도가 빠르다고 하는건지 궁금합니다!
사람보다는 하드웨어쪽에 더 가까운 언어라고 들었는데 혹시 그것때문인건가요?
요즘 embedded system의 CPU도 성능이 좋아져서, embedded system에서 C를 주로 사용하는 이유는 속도 차이보다는 메모리를 비롯해서 각종 hardware에 쉽게 접근할 수 있기 때문입니다.
그럼에도 불구하고 C는 다른 언어에 비해서 (일반적으로) 빠릅니다.
C는 다른 언어에 비해 많은 부분을 프로그래머에게 맡기는 언어입니다. 특히 메모리 관리를 잘못해서 프로그램이 오동작하는 경우가 아주 많습니다. 최근의 언어들은 이런 부분을 언어 차원에서 오류를 줄이거나 막는 방법을 제공합니다. 이렇게 (근래의) 다른 언어들은 프로그램 실행시에 안보이는 곳에서 하는 게 많아서 C에 비해 속도가 느립니다.
특히 C에서 포인터를 (잘) 이용해서 프로그래밍할 경우는 속도 효율성이 많이 올라갑니다.
하지만 근래에 나온 언어들은 C가 제공하지 않는 라이브러리들을 많이 제공하는데, 이 라이브러리들은 고수들이 매우 효율적으로 만들었기 때문에 일반인이 C가 빠르다고 해서 C로 라이브러리를 만들게 되면 다른 언어에 있는 라이브러리보다 더 늦을 수 있습니다.
안녕하세요.
C는 태생이 운영체제를 개발할 목적으로 만든 언어이며, 속도가 빠르고 바이너리 크기가 작습니다.
하지만 포인터 제어등 배우기가 어렵습니다.
Java같은 경우에는 jvm 이라는 번역기를 통해 실행되지만, C언어는 불필요 합니다. (Java가 그래서 더 느리다고 볼 수 있습니다.)
C는 처음브터 어셈플리어와 비교할만한 효율을 가지도록 저수준으로 설계가 되었습니다.
브라이언 커니핸과 데니스 리치(K&R)의 C programing language의 초판 서문에서도 C를 어셈블리어를 대체하는 이식성 있는 어셈블리어로 만드는 것을 목표로 설계가되었음을 이야기 합니다.이것은 애초에 C가 운영체제 UNIX 를 만들기 위해 고안된 언어이라 시스템 독립적인 어셈블리(System Independent Assembly)라고 불릴 정도입니다.
질문에서 임베디드 시스템에 주로 쓰인 다는 것은 C로 짜여진 프로그램은 속도가 빠르고 바이너리 크기가 작습니다. 따라서 메모리나 스토리지 용량이 제한적인 임베디드 시스템에 적합하다고 볼 수 있습니다.
C로 짜여진 코드는 속도가 빠르고 바이너리 크기도 작아 속도가 다른 무엇보다 (심지어는 생산성보다도) 중요한 임베디드 혹은 모바일 계열, 또는 시스템 프로그래밍 등에서 주로 사용됩니다.
프로그램의 규모가 커질 경우 C언어로 작성해서 얻을 수 있는 파일의 규모는 파이썬보다 훨씬 작기 때문에 과거에는 메모리 가격이 비쌌던 만큼 메모리를 적게 잡아먹는 프로그래밍 기법이 선호했으며, 화성 탐사선도 이러한 점을 반영하여 C언어로 만든 프로그램을 썻습니다.
씨샵의 가비지컬렉ㅌㅓ, 자바 jvm의 각종 기능들
각 언어들은 프로그램시 조금더 편리하게 할수 있도록 가비지 콜렉션이나 메모리할당을 관리해주는 기능들이 있습니다. 이는 엄청난 이점이지만 오버헤드를 발생시키기도 하죠 C언어는 프로그래머를 편하게 해줄 수 있는 이러한 기능들이 없기 때문에 조금 더 빠릅니다.
C언어에서는 포인터 등을 활용하여 메모리를 엑세스 할수 있는데 잘만 활용하면 타 언어보다 압도적으로 빠르지만,
이는 잘짠 코드여야 한다는 전제가 필수입니다.