JuliaImages / JuliaImages/ImageFiltering.jl
Are the allocations from `imfilter!` expected?
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 104
- Forks
- 52
- PR merge metrics
- No merged PRs in 30d
Description
Hello,
I was trying to use imfilter! with an array gx preallocated before calling the function with the hope of not allocating memory. I see 2.31 MiB allocated. Why is it happening? (should I expect it? I did not expect any allocations if the output array was preallocated)
thank you
A minimal working example:
using Images
using TestImages
using BenchmarkTools
function to_gray(image)
x = Array{ColorTypes.Gray{Float32}, 2}(image)
return Array{Float32}(x)
end
img = testimage("mandrill");
img = to_gray(img)
direction_x = centered([-1 0 1])
gx = imfilter(img, direction_x);
@benchmark imfilter($img, $direction_x)
@benchmark imfilter!($gx, $img, $direction_x)
Prints the following:
BenchmarkTools.Trial:
memory estimate: 3.31 MiB
allocs estimate: 58
--------------
minimum time: 4.126 ms (0.00% GC)
median time: 4.597 ms (0.00% GC)
mean time: 5.200 ms (7.27% GC)
maximum time: 10.802 ms (28.68% GC)
--------------
samples: 960
evals/sample: 1
BenchmarkTools.Trial:
memory estimate: 2.31 MiB
allocs estimate: 56
--------------
minimum time: 4.101 ms (0.00% GC)
median time: 4.419 ms (0.00% GC)
mean time: 4.839 ms (5.47% GC)
maximum time: 10.787 ms (25.44% GC)
--------------
samples: 1032
evals/sample: 1
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reproducing the provided minimal working example and comparing the allocation measurements for imfilter and imfilter!. Trace the imfilter! entry point to determine where the remaining allocations originate, then document whether they are expected or define a focused change and validation for eliminating them.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- performance
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100