АО
И первая не аллоцирует, а вторая аллоцирует.
Size: a a a
АО
АО
KT
z2 = ntuple(i -> (x -> x^i), Val{10}())KT
ntuple это моя боль, они мне постоянно нужны, и я в них постоянно лажаю )АО
АО
var"#498#508"(), var"#499#509"(),var"#527#529"{Int64}(1), var"#527#529"{Int64}(2)АО
KT
julia> @benchmark $z[5](1)
BenchmarkTools.Trial:
memory estimate: 0 bytes
allocs estimate: 0
--------------
minimum time: 1.752 ns (0.00% GC)
median time: 1.964 ns (0.00% GC)
mean time: 1.962 ns (0.00% GC)
maximum time: 33.908 ns (0.00% GC)
--------------
samples: 10000
evals/sample: 1000
julia> @benchmark $z2[5](1)
BenchmarkTools.Trial:
memory estimate: 0 bytes
allocs estimate: 0
--------------
minimum time: 4.213 ns (0.00% GC)
median time: 5.595 ns (0.00% GC)
mean time: 5.737 ns (0.00% GC)
maximum time: 38.442 ns (0.00% GC)
--------------
samples: 10000
evals/sample: 1000
АО
АО
A
mutable struct BigInt <: Signed
alloc::Cint
size::Cint
d::Ptr{Limb}
function BigInt(; nbits::Integer=0)
b = MPZ.init2!(new(), nbits)
finalizer(cglobal((:__gmpz_clear, :libgmp)), b)
return b
end
end
АО
A
VG
A
A
julia> mutable struct aa
i::Int
end
julia> @time(aa(10))
0.000000 seconds (1 allocation: 16 bytes)
KT
KT
KT
struct Baz{T}
fld :: T
end
julia> @benchmark Baz($[1,2,3])
BenchmarkTools.Trial:
memory estimate: 16 bytes
allocs estimate: 1
--------------
minimum time: 5.007 ns (0.00% GC)
median time: 9.500 ns (0.00% GC)
mean time: 11.555 ns (15.78% GC)
maximum time: 18.248 μs (99.95% GC)
--------------
samples: 10000
evals/sample: 1000
julia> @benchmark Baz($(1,2,3))
BenchmarkTools.Trial:
memory estimate: 0 bytes
allocs estimate: 0
--------------
minimum time: 0.029 ns (0.00% GC)
median time: 0.032 ns (0.00% GC)
mean time: 0.032 ns (0.00% GC)
maximum time: 0.054 ns (0.00% GC)
--------------
samples: 10000
evals/sample: 1000