register 키워드에 대해서..

ddoman의 이미지

c++코드를 보다보니..

변수앞에 register란 키워드를 붙이는 코드가 있더라구요..

예를들어 register int x;
이런식으로..

암튼 레퍼런스 찾아보니깐 CPU레지스터에다가 직접할당(??)한다는
소린거 같은데..

뭐..속도가 빠르다..그렇게 생각되는데..

레지스터 키워드를 붙인 변수가 확실히 퍼포먼스향상에 도움이
되는지 궁금합니다( 비교적 )

이 키워드가 잘 쓰이는 이런경우에 딱! 소스..같은건 없나해서..

과연 저 키워드가 별의미 없는것인지 어떤 상황에서 주로사용되는지
궁금합니다..

사용담도 알려주시면 감사하겠구요...^^

김충길의 이미지

register 키워드는 명시적으로 컴파일러 한테 변수를 스택이 아닌
CPU 레지스터를 사용하는 코드를 생성하고 하는 것입니다.

옵티마이즈 옵션을 쓰는 경우 컴파일러가 자동으로
레지스터에 할당합니다.

아무래도 레지스터를 사용하는게 빠르겠죠.
하지만 이 키워드를 사용하였다고 해도 꼭 레지스터를 사용할 수 있는건
아닙니다. 여유있는 CPU 레지스터에 따라 사용되기도 하고
안되기도 합니다.

screen + vim + ctags 좋아요~

ironiris의 이미지

다른 상황에서도 사용하지만
특히 for 구문에서 주로 선언합니다.
근데 요즘은 컴파일러가 좋아져서 알아서 잘 할당해준다고 합니다.
그냥 저런게 있나보다.... 하고 생각하시면 됩니다.

musiphil의 이미지

요즘은 컴파일러의 최적화 기능이 하도 좋아서, 사람이 '이 변수는 빠르게 접근할 필요가 있다'라고 판단하여 직접 register 키워드를 붙여주는 것보다 더 잘 알아서 최적화를 해 준다고 합니다. 사람이 프로그램에서 어느 부분에 실행 시간이 많이 걸릴지 추측하는 것(profile 없이)을 얼마나 못 하는지도 유명한 얘기고요.

결론은, register 키워드가 큰 도움이 될 것이 없고 신경쓰실 필요도 없다는 것입니다. 컴파일러가 더 잘 해 준다는 그런 세세한 최적화에 신경 쓸 시간에 더 좋은 알고리즘을 찾는 것이 더 생산적일 것입니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.