[Java] int는 64 bit에서도 효율적인가?

sj·2022년 11월 22일

Java

목록 보기
4/7

C/C++에서의 int

32 bit 컴퓨터, 즉 word size가 32 bit 인 컴퓨터는 32 bit 단위로 데이터를 처리한다.

정수형 타입 중 int의 이름이 'int'인 이유는 가장 효율적으로 처리될 수 있는 정수 타입이라는 의미에서이다. 따라서 32 bit까지는 int의 크기를 word size로 정하고 그다음shortlong의 크기를 정해왔다.

8 bit 컴퓨터나 16 bit 컴퓨터의 int 타입은 short 와 동일한 데이터 타입이 되고, 32 bit 컴퓨터의 int 타입은 long과 동일한 데이터 타입이 된다. 그런데 64 bit에서는 여전히 int가 32 bit다(?). 궁금증이 생겨 구글링을 하였다.

구글링을 한 결과, 64 bit 컴퓨터에서 int 타입을 64 bit로 잡아주면 longint 보다 다룰 수 있는 데이터의 크기가 적어지는 모순이 때문이라고 한다. 그래서 64 bit에서는 int를 32 bit로 쓰고 long를 64 bit를 쓰는 경우와, intlong 모두를 32 bit 컴퓨터와 동일하게 32 bit를 쓰고, long long이라는 새로운 64 bit 타입을 도입한 경우가 있다고 한다.

조금 더 명확한 답을 얻기 위해 튜터님께 여쭤본 결과. 64 bit에서는 long이 효율적이라고 하셨다. 또한 요즘은 데이터의 크기가 커져서 대부분의 경우 long을 쓴다고 한다. 심지어 long으로 부족한 경우도 많다고 하셨다.

Java에서의 int

C/C++ 같은 경우에는 16 bit, 32 bit, 64 bit 플랫폼에 따라 int의 크기가 변하지만 JVM은 타입의 안정성을 꾀하고 플랫폼 독립성을 보장하기 위해 기본 자료형인 int는 32 bit로 고정시켰다.

자바에도 마찬가지로 operand stack의 크기가 일반적으로 JVM의 word size와 같으므로 64 bit의 JVM에서는 long이 더 효율적이다.


여러 교육용 자료들이 32 bit 기준으로만 되어있는 경우가 많아서 다소 혼동이 있었는데 모쪼록 궁금증이 해결되었다.

0개의 댓글