Skip to content

Commit ae9ccb0

Browse files
committed
Force inlining for indices and size.
Especially since `indices` is used in bounds-checking, this has huge performance consequences. Fixes JuliaImages/ImageCore.jl#28.
1 parent 2a5bd0a commit ae9ccb0

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/core.jl

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -239,12 +239,12 @@ function axisdim{T,N,D,Ax,name}(::Type{AxisArray{T,N,D,Ax}}, ::Type{Axis{name}})
239239
end
240240

241241
# Base definitions that aren't provided by AbstractArray
242-
Base.size(A::AxisArray) = size(A.data)
243-
Base.size(A::AxisArray, Ax::Axis) = size(A.data, axisdim(A, Ax))
244-
Base.size{Ax<:Axis}(A::AxisArray, ::Type{Ax}) = size(A.data, axisdim(A, Ax))
245-
Base.indices(A::AxisArray) = indices(A.data)
246-
Base.indices(A::AxisArray, Ax::Axis) = indices(A.data, axisdim(A, Ax))
247-
Base.indices{Ax<:Axis}(A::AxisArray, ::Type{Ax}) = indices(A.data, axisdim(A, Ax))
242+
@inline Base.size(A::AxisArray) = size(A.data)
243+
@inline Base.size(A::AxisArray, Ax::Axis) = size(A.data, axisdim(A, Ax))
244+
@inline Base.size{Ax<:Axis}(A::AxisArray, ::Type{Ax}) = size(A.data, axisdim(A, Ax))
245+
@inline Base.indices(A::AxisArray) = indices(A.data)
246+
@inline Base.indices(A::AxisArray, Ax::Axis) = indices(A.data, axisdim(A, Ax))
247+
@inline Base.indices{Ax<:Axis}(A::AxisArray, ::Type{Ax}) = indices(A.data, axisdim(A, Ax))
248248
Base.convert{T,N}(::Type{Array{T,N}}, A::AxisArray{T,N}) = convert(Array{T,N}, A.data)
249249
# Similar is tricky. If we're just changing the element type, it can stay as an
250250
# AxisArray. But if we're changing dimensions, there's no way it can know how

0 commit comments

Comments
 (0)