C언어로 짜여진 프로그램 안에 어셈블리언어를 넣으면 실행 속도가 빨라지나요?
글쓴이: Zpdlzpdldpa / 작성시간: 금, 2012/02/10 - 1:30오후
OS같은 시스템 프로그램에서
C언어와 어셈블리 언어가 섞여져있는 코드를 봤습니다.
그 이유는 어셈블리 언어가 하드웨어를 직접 제어할 수 있기 때문이라고 알고 있었는데
혹시 실행 속도와도 관련이 있나요?
제 생각은
프로그램이 실행되기 전에
컴파일러가 C언어를 어셈블리로, 어셈블러가 어셈블리를 실행가능한 기계어로 번역해놓기 때문에
실행시간은 차이가 없다고 여겨집니다.
어차피 같은 기계어로 번역되어서 실행될테니까요.
번역 시간이야 빠르겠지요. C언어를 어셈블리로 번역하는 시간이 필요없으니까요.
제 생각이 맞는지 틀리는지 알고싶네요.
도움을 부탁드립니다.
Forums:
컴파일러보다 더 최적화된 어셈블리어 코드를 쓸 수
컴파일러보다 더 최적화된 어셈블리어 코드를 쓸 수 있는 사람이 작성한 코드라면 실행속도가 더 빨라지겠죠
요새는 컴퓨터 성능도 좋아서 유의미한 차이가 나지는 않을 것 같네요
피할 수 있을때 즐겨라! http://melotopia.net/b
요즘 컴파일러 성능이 좋아져서
왠만하면 컴파일러로 최적화된게 더 빠릅니다.
잘 짜여진 코드라면, 어셈블리어가 좀 더 빠를 수도
잘 짜여진 코드라면, 어셈블리어가 좀 더 빠를 수도 있겠지요.
영어 작문을 한다고 할때
잘 만들어진 번역기가 있다면, 국문 --> 영문 번역을 통해 하는 것보다는
만약 영어를 잘 아는 사람이 영문장을 만드는게 좀 더 나은것 처럼요. (뉘앙스 측면에서요)
암호화 관련된 코드들의 수행 시간을 보시면 어마
암호화 관련된 코드들의 수행 시간을 보시면 어마 어마하다라고 느낄 정도로 차이납니다.
대체로 성능면으로는 사람이 어셈으로 짜는거보다
대체로 성능면으로는 사람이 어셈으로 짜는거보다 컴파일러 최적화가 성능이 좋습니다.
일반적으로 OS 코드에서 볼 수 있는 어셈코드는 성능을 목적으로 한 것이 아니라 아키텍쳐 의존적인 부분들을 구현한 것이 많습니다.
리눅스 코드를 받아보시면, arch 아래에 있는 코드들이 주로 어셈 코드인것을 확인할 수 있습니다.
=================================================
Do the python !
=================================================
댓글 달기