2010-05-25 4 views
1

Ruby는 매우 멋진 언어입니다. 저는 지난 이틀 동안 그것을 배우기 시작했습니다. Ruby에서 저를 호소하는 한 가지는 단순함입니다. 매우 깨끗한 코드가 가능합니다. 그러나 Ruby의 내부 구현은 외부 세계에 노출되지 않습니다. 나는 루비가 맛에 따라 다양한 언어로 쓰여졌다는 것을 배웠다.Ruby의 실행 시간 가정

Java 배경에서 왔기 때문에 나에게 버그가있는 한 가지는 강력한 추상화 수준으로 인해 메모리 사용량과 속도입니다. 나는 Ruby 사용자들이 이것에 관해서 이야기해야만하는 것을 듣고 싶다. 메모리 사용량과 속도에 따르면, Java에서 ArrayList로 이동할시기, LinkedList로 이동할 시점, 해시를 수행 할 시점을 결정합니다. 나는 그들의 구현을 완전히 알고있다. 비록 내가하지 않는다고해도, 나는 그것들을 들여다 볼 수있다. 하지만 Ruby에서는 그다지 직관적이지 않습니다 (효율적인 구현이어야 함). 그러나, 내가 어떻게 지나치게 사물을 사용하지 않는지 확신 할 수는 있습니다. 예를 들어 단순히 배열을 정의하면 어떻게됩니까? 연속적인 메모리 위치 또는 다른 구현의 일반적인 묶음이 될 것입니까?

다양한 언어로 작성된 Ruby는 구현 된 유사한 알고리즘을 따르거나 언어마다 다릅니다.

그냥 궁금

...

+0

언어에 구애받지 않는 태그를 제거했습니다. Ruby에만 해당되는 것 같습니다. –

+0

첫째, "루비 언어"는 무엇을 의미합니까? –

+0

알려진대로 루비는 다른 상위 언어의 추상화 된 버전입니다. Ruby 언어로, 나는 Ruby 풍미를 의미했다. Ruby 언어가 하나만 있다는 것을 이해합니다. 고마워. – bragboy

답변

2

이 배포에 관해서 루비의 메모리 사용량이 확실히 고통 포인트입니다. 예를 들어 베스트 프랙티스를 사용하여 개발 된 (두 용어로는 모두 1) 두 가지 레일 스 애플리케이션이 배치 된 시스템에서 256MB 이상을 "기꺼이"차지합니다. 그러나 당신은 그걸로 꽤 유용한 통사론을 얻습니다. 그것은 "악"에 "좋은"것입니다.

나는 Ruby가 Array 객체를 저장하는 방법에 너무 신경을 쓰지 않을 것입니다. 경험 많은 Ruby 개발자인데도 언어 작성자가 언어 최적화 방법을 알고 잘 작성했다고 가정하기 때문에 저장 방법에 신경을 쓰지 않습니다. 그러나 모든 릴리스가 빠릅니다.

가 당신이 응용 프로그램의 메모리 사용에주의해야하는 위치에 대한 마음에 와서 두 곳의 : 오브젝트를 많이 만들기 큰 파일

    • 가 읽기

    당신이 경우 Ruby 프로그램에 160MB 파일을 읽으려고합니다. 160MB 이상의 메모리가 필요합니다.

    개체를 너무 많이 만들면 각 개체마다 고유 한 메모리가 할당됩니다. 객체 당 16kb라고 가정 해 봅시다. 백만 개의 개체를 만들면 16,000,000kb 또는 16GB가됩니다.

    조심하세요!

    당신은 또한에 관심이있을 수 있습니다 this handy tool.

  • +0

    자세한 통찰력에 감사드립니다. – bragboy