Probably H = @MArray(zeros(length(θ), length(θ))) is type-unstable.
In your code, it looks like length(θ) can only be 3, so try
function HLL(
θ,
data
)
H = zero(SMatrix{3, 3, Float64, 9})
for obs in data
X = to_X(obs)
e = exp(dot(θ, X))
H += e/(1+e) * X*X'
end
return -H / length(data)
end
Hopefully, it’ll be zero allocations.