2011-08-20 7 views
3

저는 Ruby의 Array 클래스를 이해하는 데 어려움을 겪고 있습니다. Google 에서 Array 클래스가 실제로 목록에 더 많이 포함되어 있지만 실제로 작동하는 것처럼 보이지 않습니다.루비에서 목록 구현?

큰 정렬 된 목록을 처리해야하므로 성능 문제가 있습니다. 하나의 요소를 추가하기 위해 전체 배열을 건너 뛰고 싶지 않습니다.

그래서 이 분명하고 (예 : caml과 같이) 목록을 명확하게 구현하는지 궁금 해서요. 또한 최적화 문제와 관련하여 Array의 메소드가 어떻게 구현되는지에 대한 좋은 문서를 찾고 있습니다.

감사합니다.

+0

성능에 대해 정말로 신경 쓰는 분이라면 Ruby [benchmark] (http://ruby-doc.org/stdlib/libdoc/benchmark/rdoc/index.html)에 대해 더 신경 써야합니다. 루비 언어는 편리하고 빠르지 않도록 설계 되었기 때문에 차이가있는 언어가 모두 포함되어 있습니다. – maerics

답변

12

루비 배열 전체 목록 인터페이스 제공 : 결국

  • each에 요소를 추가하기위한

    • push/<<
    • sort 당신이 선택 블록으로 항목을 정렬 할 수 있습니다 목록 탐색에 대한 반복자를 제공합니다 커스텀 비교기
    • ...

    특별한 List 클래스 나 Module을 가질 필요가 전혀 없습니다. 예를 들어 Java를 사용하면 List이 항상 필요하면 ArrayList을 사용하게됩니다. 왜냐하면 좋은 성능과 인덱스로 요소에 액세스하는 추가 이점을 얻을 수 있기 때문입니다. 따라서 Ruby (파이썬, PHP 또는 루아와 같은 다른 언어와 비슷 함)는 Array, HashSet의 세 가지 유형을 제공하여 컬렉션 유형과 관련하여 간단하게 유지하려고합니다. 따라서 다른 인터페이스를 쉽게 에뮬레이트 할 수있는 풍부한 인터페이스가 있습니다. List, Queue 또는 Deque와 같은 유형을 사용하십시오.

    구현에 대한 자세한 내용을 보려면 Ruby 소스를 다운로드하고 해당 파일을 조사하는 것이 좋습니다 (MRI의 경우 최상위 레벨에 array.c 임). 디렉토리).