줄리아에서 배열이 비어있는지 확인하는 법
개요
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