# Invalidations findings (from a GMT case)

**URL:** <https://discourse.julialang.org/t/invalidations-findings-from-a-gmt-case/92420>\
**Category:** General Usage\
**Tags:** performance\
**Created:** [January 2, 2023, 2:55pm UTC](https://discourse.julialang.org/t/invalidations-findings-from-a-gmt-case/92420 "2023-01-02T14:55:54Z")\
**Posts on this page:** 1\
**Showing post:** 61

<div class="post-metadata">

**Author:** ![tim.holy](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/tim.holy/32/52_2.png) [@tim.holy](https://discourse.julialang.org/u/tim.holy)\
**Post date:** [January 8, 2023, 10:41am UTC](https://discourse.julialang.org/t/invalidations-findings-from-a-gmt-case/92420/61 "2023-01-08T10:41:58Z")

</div>

> [@joa-quim](#):
>
> is so (if I’m understanding this matters) because a [GMTdataset](https://github.com/GenericMappingTools/GMT.jl/blob/master/src/gmt_main.jl#L105) is an abstract array, so all other types that implement the abstract array interface are candidates to suffer from these inference issues.

No. It’s the same reason that

```julia
julia> isconcretetype(Array)
false

julia> isconcretetype(Tuple)
false

julia> isconcretetype(Pair)
false

```

but

```julia
julia> isconcretetype(Array{Float32,3})
true

julia> isconcretetype(Tuple{Int,String})
true

julia> isconcretetype(Pair{Symbol,Any})
true

```

Until all the parameters are specified, it’s not concrete. As I said above, “Any time you have abstract parameters you will get inference failures.”

---

_[View the full topic](https://discourse.julialang.org/t/invalidations-findings-from-a-gmt-case/92420)._
