4.C
함수원형에 나오는 restrict는 무엇을 의미할까?
yoons.Dev
2022. 9. 16. 19:28
함수의 매뉴얼을 보다보면 매개변수에 restrict으로 선언해놓는 경우가 여럿 보인다.
개발자로 공부를 함에 있어 이런게 궁금하지 않을 수 없어서 찾아본 결과 최적화 이슈를 해결하기 위해 c99에서나온 키워드라는 것을 알았다.
이 키워드는 어셈블리어에서부터 세분화해서 봐야하는 키워드 이다. 그렇지만 쉽게 설명하는것이 쉽게 이해할 수 있을거라 생각해서 정리한 결과는 아래와 같다.
실제로 우리가 소스코드를 작성하고 컴파일을 하면 어떠한 변수를 선언하고 해당 변수에 대해 수정,삭제 등을 하지 않아도 어셈블리단에서 프로세스가 돌때마다 해당 변수를 찾아가서 확인을 한다.(이 변수가 진짜 그대로인지 확인하는역할)
그리고 나서 변경점이 없다는 것을 확인하고 쓰게 한다.
그런데 restrict 키워드를 사용하면 해당 변수의 메모리를 확인하지 않아도 된다는것을 증명한다는 의미로 쓰인다.(그 변수의 변경점이 없다면)
그래서 최적화 이슈를 해결하기 위해 나온 키워드라는 것이다. 간단한 프로그램을 돌릴때는 상관이 없을 수도 있지만 용량이 큰 프로그램에서는 그 하나의 어셈블리 행위를 지우는 것이 차이가 큰 것 같다. 아직 나는 그정도까진 들어가보지 않아서 체감은 모르겠지만 해당 키워드가 그러한 최적화를 위한 키워드라는 것을 알았기에 만족한다.