줄리아에서 배열이 비어있는지 확인하는 법

줄리아에서 배열이 비어있는지 확인하는 법

How to Check that Array is Empty in julia

개요

isempty() 함수를 사용하면 된다.

코드

julia> isempty([])
true

julia> isempty(Set())
true

julia> isempty("")
true

제목에서는 배열이라고 했지만 사실 배열이 아니라 집합이나 문자열이어도 된다.

최적화

물론 배열이 비어있는지는 length()가 $0$ 인지 확인해도 상관 없을 수 있다.

julia> @time for t in 1:10^6
           isempty([])
       end
  0.039721 seconds (1000.00 k allocations: 76.294 MiB, 27.85% gc time)

julia> @time for t in 1:10^6
           length([]) == 0
       end
  0.041762 seconds (1000.00 k allocations: 76.294 MiB, 19.18% gc time)

보다시피 빈 배열의 경우 두 방법은 성능차이를 보이지 않는다.

julia> x = 1:10^6;

julia> @time for t in 1:10^6
           isempty(x)
       end
  0.017158 seconds

julia> @time for t in 1:10^6
           length(x) == 0
       end
  0.043243 seconds (1000.00 k allocations: 15.259 MiB)

반면 배열이 빈 경우가 아닐 땐 위와 같이 두 배 이상의 속도차이를 보인다. length()는 구체적인 길이를 반환해야하고 isempty()는 첫번째 원소가 존재하는지만 확인하면 되므로 당연한 일이다. 가독성의 측면이나 결합조건문을 쓰는 상황까지 생각해보면 isempty()를 사용하는 것이 더욱 바람직하다.

전체코드

isempty([])
isempty(Set())
isempty("")

@time for t in 1:10^6
    isempty([])
end
@time for t in 1:10^6
    length([]) == 0
end

x = 1:10^6
@time for t in 1:10^6
    isempty(x)
end
@time for t in 1:10^6
    length(x) == 0
end

환경

  • OS: Windows
  • julia: v1.6.3
댓글