2009-12-01 8 views
4

사람들이 64 비트 플랫폼 용 MRI 루비 (1.8.7)를 컴파일하는 것처럼 보입니다. 나는 내가 원하는 답을 실제로 얻지 않고 잠시 동안 검색하고 독서 해왔다. Ruby에서 실제로 4GB 이상의 메모리를 사용하는 사람이 있는지 알고 싶습니다. 그렇게 컴파일하면 루비는 정말로 64 비트인가?64 비트 Ruby가 있습니까?

소스 코드에서 64 비트로 테스트되지 않았 음을 나타내는 주석을 발견했습니다. 예를 들어 "BigDecimal은 아직 컴파일되지 않고 64 비트 정수 시스템에서 테스트되지 않았습니다." BigDecimal에 대한 의견이에 있습니다.

Ruby의 다른 구현이 64 비트에서하는 일도 흥미 롭습니다.

답변

7

MRI (1.8.x 및 1.9.x 라인 모두)는 64 비트로 컴파일 될 수 있습니다.

예를 들어 Snow Leopard에는 1.8.7이 64 비트로 컴파일되어 번들로 제공됩니다. 활동 모니터에서 보거나 irb에서 묻습니다 (예 : 42.size). 64 비트로 컴파일되면 8 (바이트), 그렇지 않으면 4 (바이트)가됩니다.

루비는 4G 이상의 램에 액세스 할 수 있습니다. 당신이 4 개 이상의 G 또는 램이없는 경우 OS가 많이 교환하지만, 심지어 4기가바이트 작동 내 컴퓨터에 있기 때문에 시간이 걸릴 것입니다 마지막 줄을 얻기

$ irb 
>> n = (1 << 29) + 8 
=> 536870920 
>> x = Array.new(n, 42); x.size 
=> 536870921 # one greater because it holds elements from 0 to n inclusive 

예를 들면 다음과 같습니다. 프로세스에 대한 가상 램의 크기는 G.

4.02이었다 내가 구식이었다 BigDecimal를 HTML 파일에서 주석 업데이트

(3 월 2003을 ...)

+0

어떻게 저장에 대한 그 64의 536,870,920 (4기가바이트 + 8) 메모리의 비트 정수가 가능합니까? –

+0

예, 문제 없습니다. 그에 따라 내 대답을 수정했습니다. –

+0

위대한 답변, 감사합니다! –