register 키워드에 대해서..
글쓴이: ddoman / 작성시간: 수, 2003/02/12 - 3:16오후
c++코드를 보다보니..
변수앞에 register란 키워드를 붙이는 코드가 있더라구요..
예를들어 register int x;
이런식으로..
암튼 레퍼런스 찾아보니깐 CPU레지스터에다가 직접할당(??)한다는
소린거 같은데..
뭐..속도가 빠르다..그렇게 생각되는데..
레지스터 키워드를 붙인 변수가 확실히 퍼포먼스향상에 도움이
되는지 궁금합니다( 비교적 )
이 키워드가 잘 쓰이는 이런경우에 딱! 소스..같은건 없나해서..
과연 저 키워드가 별의미 없는것인지 어떤 상황에서 주로사용되는지
궁금합니다..
사용담도 알려주시면 감사하겠구요...^^
Forums:
register 키워드는 명시적으로 컴파일러 한테 변수를 스택이 아닌
register 키워드는 명시적으로 컴파일러 한테 변수를 스택이 아닌
CPU 레지스터를 사용하는 코드를 생성하고 하는 것입니다.
옵티마이즈 옵션을 쓰는 경우 컴파일러가 자동으로
레지스터에 할당합니다.
아무래도 레지스터를 사용하는게 빠르겠죠.
하지만 이 키워드를 사용하였다고 해도 꼭 레지스터를 사용할 수 있는건
아닙니다. 여유있는 CPU 레지스터에 따라 사용되기도 하고
안되기도 합니다.
screen + vim + ctags 좋아요~
for 구문등을 돌릴때 주로 사용합니다.
다른 상황에서도 사용하지만
특히 for 구문에서 주로 선언합니다.
근데 요즘은 컴파일러가 좋아져서 알아서 잘 할당해준다고 합니다.
그냥 저런게 있나보다.... 하고 생각하시면 됩니다.
실제적으로는 별 차이 없을 겁니다.
요즘은 컴파일러의 최적화 기능이 하도 좋아서, 사람이 '이 변수는 빠르게 접근할 필요가 있다'라고 판단하여 직접 register 키워드를 붙여주는 것보다 더 잘 알아서 최적화를 해 준다고 합니다. 사람이 프로그램에서 어느 부분에 실행 시간이 많이 걸릴지 추측하는 것(profile 없이)을 얼마나 못 하는지도 유명한 얘기고요.
결론은, register 키워드가 큰 도움이 될 것이 없고 신경쓰실 필요도 없다는 것입니다. 컴파일러가 더 잘 해 준다는 그런 세세한 최적화에 신경 쓸 시간에 더 좋은 알고리즘을 찾는 것이 더 생산적일 것입니다.
댓글 달기