Precompiling of parametric constructors

Dear all,
I am trying to implement some variable tracking types in a package colled DiffCheckNumbers.jl.
The main issue I’m facing now is the slowdown that is generated by the compilation of the constructors.

struct DiffCheck{T<:ReComp, S, N} <: Number
    der::StaticTuple{T,S,N} # maybe not the fastest structure
    function DiffCheck{T, S}(x::T, der::StaticTuple{T,S,N}) where {T<:ReComp, S, N}
        return new{T,S,N}(x, der)

I would like to ran, at runtime, with a decent speed, the following code:

w = Array{DiffCheck{Float64, A, 1} where A,1}[DiffCheck(1.0, Symbol("x",i)) for i in 1:1000]

I would like to precompile the Constructors; so the first idea is to add, in the same file as the Constructors, inside a precompiled module

for i in 1:1000
     a = Symbol("x",i)
     DiffCheck{Float64, (a, )}(1.0, StaticTuple{Float64, (a, ), 1}(1.0, ))

But timing I do not see any performance gain. is there a specific way to precompile constructors (in case, using precompile())?
And parametric methods?

Thank you all

Indeed, I can call explicitly precompile but I do not obtain the result I wanted.

julia> precompile(DiffCheck{Float64, (:y, )}, (Float64, StaticTuple{Float64, (:y, ), 1}))

julia> @time DiffCheck{Float64, (:y, )}(1.0, StaticTuple{Float64, (:y, ), 1}(1.0, ))
  0.008083 seconds (1.86 k allocations: 106.935 KiB)
DiffCheck{Float64,(:y,),1}(1.0, (y = 1.0,))

julia> @time DiffCheck{Float64, (:y, )}(1.0, StaticTuple{Float64, (:y, ), 1}(1.0, ))
  0.000051 seconds (37 allocations: 1.953 KiB)
DiffCheck{Float64,(:y,),1}(1.0, (y = 1.0,))