ジュリアで配列が空かどうかを確認する方法
概要
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)
一方で、配列が空でない場合、上記のように2倍以上の速度差が見られる。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