logo

ジュリアで配列が空かどうかを確認する方法 📂ジュリア

ジュリアで配列が空かどうかを確認する方法

概要

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