Size, Length, Count: 차이점은 무엇인가?

발행: (2026년 5월 5일 AM 09:48 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

Size, Length 및 Count: 차이점에 대한 표지 이미지

순수 Ruby에서

length는 가장 일반적입니다. 배열, 문자열 또는 해시 안에 메모리에 이미 존재하는 요소가 몇 개인지를 나타냅니다.

array = [1, 2, 3, 4, 5]
puts array.length # => 5

string = "Hello, World!"
puts string.length # => 13

size는 배열과 문자열에 대해 length와 동일한 동작을 합니다; 선택은 보통 선호도에 따라 달라집니다 (예: 문자열에는 length, 컬렉션에는 size).

count는 다릅니다. 인수나 블록을 전달하여 카운트할 대상을 필터링할 수 있기 때문입니다.

numeros = [1, 2, 3, 4, 5, 6]

# Quantos são pares?
numeros.count(&:even?) # => 3

# Quantas vezes aparece o número 2?
numeros.count(2) # => 1

Rails에서는 상황이 달라집니다

ActiveRecord 컨텍스트에서 이 메서드들 중 어떤 것을 선택하느냐에 따라 성능에 직접적인 영향을 미칩니다. 각각은 데이터베이스에 다른 쿼리를 생성하기 때문입니다.

  • **count**는 항상 데이터베이스에서 SELECT COUNT(*)를 실행합니다. 객체에 아직 저장되지 않은 변경을 무시하고 데이터베이스에 존재하는 정확한 값을 얻을 때 유용합니다. 여러 번 호출하면 다중 쿼리를 발생시키므로 피해야 합니다.
  • **length**는 모든 레코드를 메모리로 로드하고 Ruby 객체로 변환한 뒤 배열의 크기를 셉니다. 데이터가 이미 로드되었거나 곧 사용될 예정일 때 적합하지만, 큰 테이블에서는 병목이 될 수 있습니다.
  • **size**는 두 동작을 결합합니다: 레코드가 이미 로드되어 있으면 메모리에서 카운트합니다(length와 같이); 그렇지 않으면 SELECT COUNT(*)를 실행합니다(count와 같이).

실제로 size가 가장 효율적인 선택인 경우가 많으며, 데이터 상태에 따라 자동으로 적응합니다.

0 조회
Back to Blog

관련 글

더 보기 »