int c switch(c)
char c switch(c)
이 둘의 속도 차이가 어느 정도 있는 편인가요?
int를 쓰는 게 최적화라는데 이해가 잘 안가네요
설명해주실 수 있으신 분 계신가요?
프로세서는 ALU에서 int 단위로 데이터를 처리합니다. char 데이터를 비교(또는 연산)하려면 일단 int를 가져와서 다시 char 단위로 쪼개야 하기 때문에 부가적인 처리가 들어갑니다.
여기에서 bit 별로 연산을 해야 한다면 부가적인 overhead는 더 커지겠죠.
그리고 long long 형으로 데이터를 연산한다면 int 형 데이터 여러개로 나누어 처리한 후 합쳐야 하기 때문에 역시 오버헤드가 늘어나게 됩니다.
따라서 아주 약간이라도 속도를 높여야 한다면 가능한 int 형을 쓰는게 좋겠죠. 하지만 이 체감속도는 해당 함수가 초당 수백만 ~ 수천만번 불릴경우에만 느낄수 있다는 점도 생각해 보세요.
그렇기 때문에 사용할 데이터 형을 결정하는 것은 속도적인 측면보다는 처리해야 할 데이터 들끼리 호환성을 생각해서 결정하는 것이 좋습니다. 가능한 type cast를 줄이고 프로그래밍하는 것이 향후 찾기 힘든 버그를 줄이는 방안이 될수도 있거든요.
텍스트 포맷에 대한 자세한 정보
<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]
프로세서는 ALU에서 int 단위로 데이터를
프로세서는 ALU에서 int 단위로 데이터를 처리합니다. char 데이터를 비교(또는 연산)하려면 일단 int를 가져와서 다시 char 단위로 쪼개야 하기 때문에 부가적인 처리가 들어갑니다.
여기에서 bit 별로 연산을 해야 한다면 부가적인 overhead는 더 커지겠죠.
그리고 long long 형으로 데이터를 연산한다면 int 형 데이터 여러개로 나누어 처리한 후 합쳐야 하기 때문에 역시 오버헤드가 늘어나게 됩니다.
따라서 아주 약간이라도 속도를 높여야 한다면 가능한 int 형을 쓰는게 좋겠죠. 하지만 이 체감속도는 해당 함수가 초당 수백만 ~ 수천만번 불릴경우에만 느낄수 있다는 점도 생각해 보세요.
그렇기 때문에 사용할 데이터 형을 결정하는 것은 속도적인 측면보다는 처리해야 할 데이터 들끼리 호환성을 생각해서 결정하는 것이 좋습니다. 가능한 type cast를 줄이고 프로그래밍하는 것이 향후 찾기 힘든 버그를 줄이는 방안이 될수도 있거든요.
댓글 달기