JuliaImages / ImageFiltering.jl

Julia implementations of multidimensional array convolution and nonlinear stencil operations
Other
99 stars 49 forks source link

also use the streaming max-min filter for maximum/minimum #193

Open johnnychen94 opened 3 years ago

johnnychen94 commented 3 years ago

I haven't read the Lemire paper yet so I don't know if there is a more efficient implementation for maximum/minimum, but now simply applying first/last on the extrema result still gives about ~4x boost.

julia> img2d = randn(30,30);

julia> @btime mapwindow(maximum, $img2d, (5,5));
  49.783 μs (54 allocations: 52.72 KiB)

julia> f(x) = maximum(x);

julia> @btime mapwindow(f, $img2d, (5,5));
  247.161 μs (4510 allocations: 271.91 KiB)

Hmmm, I plan to read that for my own interest in https://github.com/JuliaImages/Images.jl/issues/918.

cc @Dsantra92

codecov[bot] commented 3 years ago

Codecov Report

Merging #193 into master will decrease coverage by 0.13%. The diff coverage is 0.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #193      +/-   ##
==========================================
- Coverage   91.62%   91.49%   -0.14%     
==========================================
  Files           9        9              
  Lines        1385     1387       +2     
==========================================
  Hits         1269     1269              
- Misses        116      118       +2     
Impacted Files Coverage Δ
src/mapwindow.jl 85.90% <0.00%> (-0.77%) :arrow_down:

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 0c963dc...f0d5db9. Read the comment docs.

github-actions[bot] commented 3 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmarks: - Target: 11 Oct 2020 - 14:56 - Baseline: 11 Oct 2020 - 15:07 * Package commits: - Target: f873a9 - Baseline: 0c963d * Julia commits: - Target: 539f3c - Baseline: 539f3c * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |------------------------------------------------------|------------------------------|------------------------------| | `["imfilter", "FFT_GrayN0f8_2048×2048"]` | 0.91 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "FFT_N0f8_100×100×100"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_RGBF32_100×100×100"]` | 0.90 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "denselarge_F32_2048"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_GrayF32_2048"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_F32_2048×2048"]` | 0.67 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_GrayF32_2048"]` | 0.93 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_GrayN0f8_2048"]` | 0.86 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 0.86 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredlarge_F32_100×100"]` | 1.10 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredlarge_F32_2048×2048"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredlarge_GrayF32_2048"]` | 0.95 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredlarge_N0f8_100×100"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredlarge_RGBF32_100×100"]` | 0.92 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredlarge_RGBF32_2048×2048"]` | 0.87 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredlarge_RGBN0f8_100×100"]` | 0.92 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredlarge_RGBN0f8_2048×2048"]` | 0.88 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_F32_100×100"]` | 0.94 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_F32_2048×2048"]` | 0.52 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayF32_2048"]` | 0.87 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 1.42 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayN0f8_2048"]` | 0.93 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 0.52 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 0.46 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 0.63 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 0.82 (5%) :white_check_mark: | 1.00 (1%) | | `["mapwindow", "cheap f, tiny window"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["mapwindow", "extrema"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["mapwindow", "maximum"]` | 0.21 (5%) :white_check_mark: | 0.19 (1%) :white_check_mark: | | `["mapwindow", "minimum"]` | 0.21 (5%) :white_check_mark: | 0.19 (1%) :white_check_mark: | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ### Target ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 7390 s 0 s 1544 s 88456 s 0 s #2 2095 MHz 69894 s 0 s 5503 s 21991 s 0 s Memory: 6.791389465332031 GB (1987.22265625 MB free) Uptime: 991.0 sec Load Avg: 1.0078125 1.0 0.67724609375 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512) ``` ### Baseline ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 23886 s 0 s 2969 s 141149 s 0 s #2 2095 MHz 119767 s 0 s 8898 s 39509 s 0 s Memory: 6.791389465332031 GB (2099.09375 MB free) Uptime: 1699.0 sec Load Avg: 1.0 1.0 0.876953125 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512) ``` --- # Target result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmark: 11 Oct 2020 - 14:56 * Package commit: f873a9 * Julia commit: 539f3c * Julia command flags: None * Environment variables: None ## Results Below is a table of this job's results, obtained by running the benchmarks. The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to index into the BaseBenchmarks suite to retrieve the corresponding benchmarks. The percentages accompanying time and memory values in the below table are noise tolerances. The "true" time/memory value for a given benchmark is expected to fall within this percentage of the reported value. An empty cell means that the value was zero. | ID | time | GC time | memory | allocations | |------------------------------------------------------|----------------:|----------:|----------------:|------------:| | `["imfilter", "FFT_F32_100×100"]` | 385.617 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_F32_100×100×100"]` | 78.051 ms (5%) | 1.883 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_F32_2048"]` | 241.719 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_F32_2048×2048"]` | 413.236 ms (5%) | 2.951 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_GrayF32_100×100"]` | 415.731 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayF32_100×100×100"]` | 82.757 ms (5%) | 1.969 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayF32_2048"]` | 243.612 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayF32_2048×2048"]` | 410.449 ms (5%) | 3.230 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_GrayN0f8_100×100"]` | 414.223 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayN0f8_100×100×100"]` | 81.477 ms (5%) | 2.051 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayN0f8_2048"]` | 250.816 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayN0f8_2048×2048"]` | 391.168 ms (5%) | 5.517 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_N0f8_100×100"]` | 375.315 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_N0f8_100×100×100"]` | 82.215 ms (5%) | 3.810 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_N0f8_2048"]` | 226.308 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_N0f8_2048×2048"]` | 385.753 ms (5%) | 5.832 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_RGBF32_100×100"]` | 1.250 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBF32_100×100×100"]` | 314.642 ms (5%) | 2.700 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBF32_2048"]` | 395.431 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBF32_2048×2048"]` | 1.430 s (5%) | 37.886 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "FFT_RGBN0f8_100×100"]` | 1.218 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBN0f8_100×100×100"]` | 305.469 ms (5%) | 3.691 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBN0f8_2048"]` | 385.913 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBN0f8_2048×2048"]` | 1.381 s (5%) | 28.675 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "IIRGaussian_F32_100×100"]` | 138.308 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_F32_100×100×100"]` | 17.148 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_F32_2048"]` | 22.301 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_F32_2048×2048"]` | 57.294 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayF32_100×100"]` | 138.606 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayF32_100×100×100"]` | 17.334 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayF32_2048"]` | 22.401 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayF32_2048×2048"]` | 57.216 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100"]` | 141.708 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100×100"]` | 17.413 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayN0f8_2048"]` | 22.701 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayN0f8_2048×2048"]` | 58.619 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_N0f8_100×100"]` | 140.905 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_N0f8_100×100×100"]` | 17.453 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_N0f8_2048"]` | 22.702 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_N0f8_2048×2048"]` | 57.617 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBF32_100×100"]` | 217.212 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBF32_100×100×100"]` | 34.443 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBF32_2048"]` | 27.202 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBF32_2048×2048"]` | 137.244 ms (5%) | | 144.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100"]` | 226.813 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100×100"]` | 34.123 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBN0f8_2048"]` | 28.701 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBN0f8_2048×2048"]` | 137.880 ms (5%) | | 144.25 MiB (1%) | 2075 | | `["imfilter", "denselarge_F32_100×100"]` | 1.733 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_F32_100×100×100"]` | 2.994 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_F32_2048"]` | 18.400 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_F32_2048×2048"]` | 863.317 ms (5%) | 2.416 ms | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayF32_100×100"]` | 1.732 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayF32_100×100×100"]` | 2.896 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayF32_2048"]` | 18.301 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayF32_2048×2048"]` | 857.158 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayN0f8_100×100"]` | 1.733 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayN0f8_100×100×100"]` | 2.923 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayN0f8_2048"]` | 18.501 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayN0f8_2048×2048"]` | 891.471 ms (5%) | 1.824 ms | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_N0f8_100×100"]` | 1.736 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_N0f8_100×100×100"]` | 2.871 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_N0f8_2048"]` | 18.401 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_N0f8_2048×2048"]` | 836.555 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBF32_100×100"]` | 1.901 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBF32_100×100×100"]` | 3.088 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBF32_2048"]` | 31.702 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBF32_2048×2048"]` | 968.222 ms (5%) | 2.074 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBN0f8_100×100"]` | 1.906 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBN0f8_100×100×100"]` | 3.107 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBN0f8_2048"]` | 31.901 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBN0f8_2048×2048"]` | 951.282 ms (5%) | 1.913 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "densesmall_F32_100×100"]` | 82.906 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_F32_100×100×100"]` | 36.675 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_F32_2048"]` | 8.667 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_F32_2048×2048"]` | 37.979 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayF32_100×100"]` | 86.404 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayF32_100×100×100"]` | 36.204 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayF32_2048"]` | 8.667 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 40.333 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 88.203 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayN0f8_100×100×100"]` | 36.056 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayN0f8_2048"]` | 8.867 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 39.934 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_N0f8_100×100"]` | 83.803 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_N0f8_100×100×100"]` | 35.992 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_N0f8_2048"]` | 8.976 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_N0f8_2048×2048"]` | 37.655 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBF32_100×100"]` | 123.205 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBF32_100×100×100"]` | 51.169 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBF32_2048"]` | 14.201 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBF32_2048×2048"]` | 112.480 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBN0f8_100×100"]` | 123.505 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBN0f8_100×100×100"]` | 50.238 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBN0f8_2048"]` | 15.500 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBN0f8_2048×2048"]` | 110.662 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100"]` | 798.233 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100×100"]` | 156.246 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_F32_2048"]` | 64.104 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_F32_2048×2048"]` | 322.928 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayF32_100×100"]` | 738.229 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayF32_100×100×100"]` | 158.315 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayF32_2048"]` | 64.503 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayF32_2048×2048"]` | 299.592 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayN0f8_100×100"]` | 741.528 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayN0f8_100×100×100"]` | 160.118 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayN0f8_2048"]` | 64.503 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayN0f8_2048×2048"]` | 305.721 ms (5%) | 1.989 ms | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_N0f8_100×100"]` | 802.826 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_N0f8_100×100×100"]` | 156.045 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_N0f8_2048"]` | 64.404 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_N0f8_2048×2048"]` | 322.868 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBF32_100×100"]` | 1.017 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBF32_100×100×100"]` | 236.567 ms (5%) | 1.955 ms | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBF32_2048"]` | 90.106 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBF32_2048×2048"]` | 466.194 ms (5%) | 2.467 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBN0f8_100×100"]` | 1.029 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBN0f8_100×100×100"]` | 238.757 ms (5%) | 1.418 ms | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBN0f8_2048"]` | 91.604 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBN0f8_2048×2048"]` | 466.211 ms (5%) | 2.012 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredsmall_F32_100×100"]` | 53.104 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 9.088 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_F32_2048"]` | 7.980 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_F32_2048×2048"]` | 26.971 ms (5%) | 2.601 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayF32_100×100"]` | 53.105 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayF32_100×100×100"]` | 8.564 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayF32_2048"]` | 7.650 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 51.187 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayN0f8_100×100"]` | 55.504 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayN0f8_100×100×100"]` | 8.446 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayN0f8_2048"]` | 8.375 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 26.116 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_N0f8_100×100"]` | 55.304 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 9.075 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_N0f8_2048"]` | 8.275 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 23.910 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBF32_100×100"]` | 91.605 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBF32_100×100×100"]` | 17.399 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBF32_2048"]` | 14.201 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 79.198 ms (5%) | 1.407 ms | 288.41 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBN0f8_100×100"]` | 92.904 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBN0f8_100×100×100"]` | 16.840 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBN0f8_2048"]` | 14.100 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 100.616 ms (5%) | 1.917 ms | 288.41 MiB (1%) | 28 | | `["mapwindow", "cheap f, tiny window"]` | 10.126 μs (5%) | | 8.81 KiB (1%) | 20 | | `["mapwindow", "expensive f"]` | 1.564 ms (5%) | | 1.50 MiB (1%) | 22004 | | `["mapwindow", "extrema"]` | 49.202 μs (5%) | | 45.53 KiB (1%) | 53 | | `["mapwindow", "maximum"]` | 50.005 μs (5%) | | 52.72 KiB (1%) | 54 | | `["mapwindow", "mean, large window"]` | 2.310 ms (5%) | | 1.70 MiB (1%) | 29560 | | `["mapwindow", "mean, small window"]` | 14.600 μs (5%) | | 10.05 KiB (1%) | 41 | | `["mapwindow", "median!"]` | 682.327 μs (5%) | | 272.09 KiB (1%) | 4515 | | `["mapwindow", "minimum"]` | 50.502 μs (5%) | | 52.72 KiB (1%) | 54 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 7390 s 0 s 1544 s 88456 s 0 s #2 2095 MHz 69894 s 0 s 5503 s 21991 s 0 s Memory: 6.791389465332031 GB (1987.22265625 MB free) Uptime: 991.0 sec Load Avg: 1.0078125 1.0 0.67724609375 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512) ``` --- # Baseline result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmark: 11 Oct 2020 - 15:7 * Package commit: 0c963d * Julia commit: 539f3c * Julia command flags: None * Environment variables: None ## Results Below is a table of this job's results, obtained by running the benchmarks. The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to index into the BaseBenchmarks suite to retrieve the corresponding benchmarks. The percentages accompanying time and memory values in the below table are noise tolerances. The "true" time/memory value for a given benchmark is expected to fall within this percentage of the reported value. An empty cell means that the value was zero. | ID | time | GC time | memory | allocations | |------------------------------------------------------|----------------:|-----------:|----------------:|------------:| | `["imfilter", "FFT_F32_100×100"]` | 384.221 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_F32_100×100×100"]` | 78.588 ms (5%) | 1.902 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_F32_2048"]` | 243.416 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_F32_2048×2048"]` | 407.744 ms (5%) | 3.067 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_GrayF32_100×100"]` | 423.027 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayF32_100×100×100"]` | 84.430 ms (5%) | 2.730 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayF32_2048"]` | 246.414 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayF32_2048×2048"]` | 423.384 ms (5%) | 2.799 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_GrayN0f8_100×100"]` | 428.025 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayN0f8_100×100×100"]` | 84.414 ms (5%) | 2.393 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayN0f8_2048"]` | 249.715 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayN0f8_2048×2048"]` | 431.342 ms (5%) | 6.470 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_N0f8_100×100"]` | 385.519 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_N0f8_100×100×100"]` | 77.936 ms (5%) | 1.854 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_N0f8_2048"]` | 233.519 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_N0f8_2048×2048"]` | 405.072 ms (5%) | 3.094 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_RGBF32_100×100"]` | 1.219 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBF32_100×100×100"]` | 350.663 ms (5%) | 3.050 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBF32_2048"]` | 392.325 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBF32_2048×2048"]` | 1.374 s (5%) | 29.055 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "FFT_RGBN0f8_100×100"]` | 1.229 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBN0f8_100×100×100"]` | 301.644 ms (5%) | 5.683 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBN0f8_2048"]` | 384.929 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBN0f8_2048×2048"]` | 1.353 s (5%) | 30.950 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "IIRGaussian_F32_100×100"]` | 138.308 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_F32_100×100×100"]` | 17.288 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_F32_2048"]` | 22.501 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_F32_2048×2048"]` | 57.145 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayF32_100×100"]` | 138.407 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayF32_100×100×100"]` | 17.319 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayF32_2048"]` | 22.501 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayF32_2048×2048"]` | 57.869 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100"]` | 140.608 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100×100"]` | 17.826 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayN0f8_2048"]` | 23.202 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayN0f8_2048×2048"]` | 58.929 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_N0f8_100×100"]` | 140.811 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_N0f8_100×100×100"]` | 17.424 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_N0f8_2048"]` | 23.201 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_N0f8_2048×2048"]` | 58.635 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBF32_100×100"]` | 217.313 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBF32_100×100×100"]` | 33.617 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBF32_2048"]` | 27.601 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBF32_2048×2048"]` | 136.121 ms (5%) | | 144.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100"]` | 227.814 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100×100"]` | 33.924 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBN0f8_2048"]` | 28.802 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBN0f8_2048×2048"]` | 136.879 ms (5%) | 2.211 ms | 144.25 MiB (1%) | 2075 | | `["imfilter", "denselarge_F32_100×100"]` | 1.697 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_F32_100×100×100"]` | 2.923 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_F32_2048"]` | 17.101 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_F32_2048×2048"]` | 874.395 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayF32_100×100"]` | 1.694 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayF32_100×100×100"]` | 2.955 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayF32_2048"]` | 17.201 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayF32_2048×2048"]` | 887.670 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayN0f8_100×100"]` | 1.731 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayN0f8_100×100×100"]` | 2.876 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayN0f8_2048"]` | 18.201 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayN0f8_2048×2048"]` | 863.298 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_N0f8_100×100"]` | 1.698 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_N0f8_100×100×100"]` | 2.981 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_N0f8_2048"]` | 18.101 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_N0f8_2048×2048"]` | 846.622 ms (5%) | 1.751 ms | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBF32_100×100"]` | 1.867 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBF32_100×100×100"]` | 3.112 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBF32_2048"]` | 31.702 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBF32_2048×2048"]` | 985.536 ms (5%) | 1.997 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBN0f8_100×100"]` | 1.868 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBN0f8_100×100×100"]` | 3.129 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBN0f8_2048"]` | 31.902 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBN0f8_2048×2048"]` | 979.428 ms (5%) | 2.205 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "densesmall_F32_100×100"]` | 85.705 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_F32_100×100×100"]` | 35.945 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_F32_2048"]` | 8.701 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_F32_2048×2048"]` | 56.541 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayF32_100×100"]` | 83.004 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayF32_100×100×100"]` | 36.108 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayF32_2048"]` | 9.367 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 38.069 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 83.607 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayN0f8_100×100×100"]` | 35.890 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayN0f8_2048"]` | 10.300 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 46.171 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_N0f8_100×100"]` | 84.407 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_N0f8_100×100×100"]` | 35.747 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_N0f8_2048"]` | 9.351 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_N0f8_2048×2048"]` | 39.581 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBF32_100×100"]` | 123.106 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBF32_100×100×100"]` | 50.663 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBF32_2048"]` | 14.200 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBF32_2048×2048"]` | 109.440 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBN0f8_100×100"]` | 123.507 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBN0f8_100×100×100"]` | 51.118 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBN0f8_2048"]` | 15.501 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBN0f8_2048×2048"]` | 110.931 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100"]` | 725.637 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100×100"]` | 156.875 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_F32_2048"]` | 64.204 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_F32_2048×2048"]` | 300.745 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayF32_100×100"]` | 722.635 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayF32_100×100×100"]` | 153.589 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayF32_2048"]` | 68.004 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayF32_2048×2048"]` | 301.445 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayN0f8_100×100"]` | 742.563 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayN0f8_100×100×100"]` | 156.001 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayN0f8_2048"]` | 63.903 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayN0f8_2048×2048"]` | 297.441 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_N0f8_100×100"]` | 744.356 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_N0f8_100×100×100"]` | 157.627 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_N0f8_2048"]` | 64.904 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_N0f8_2048×2048"]` | 307.652 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBF32_100×100"]` | 1.101 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBF32_100×100×100"]` | 240.248 ms (5%) | | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBF32_2048"]` | 90.305 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBF32_2048×2048"]` | 534.735 ms (5%) | 2.246 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBN0f8_100×100"]` | 1.118 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBN0f8_100×100×100"]` | 239.795 ms (5%) | | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBN0f8_2048"]` | 91.805 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBN0f8_2048×2048"]` | 529.148 ms (5%) | 2.358 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredsmall_F32_100×100"]` | 56.604 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 8.221 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_F32_2048"]` | 8.100 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_F32_2048×2048"]` | 51.858 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayF32_100×100"]` | 54.004 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayF32_100×100×100"]` | 8.812 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayF32_2048"]` | 8.751 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 35.931 ms (5%) | 918.182 μs | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayN0f8_100×100"]` | 55.103 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayN0f8_100×100×100"]` | 8.559 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayN0f8_2048"]` | 9.050 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 50.683 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_N0f8_100×100"]` | 58.104 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 8.166 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_N0f8_2048"]` | 8.075 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 52.503 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBF32_100×100"]` | 89.305 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBF32_100×100×100"]` | 17.054 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBF32_2048"]` | 14.301 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 125.411 ms (5%) | 1.857 ms | 288.41 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBN0f8_100×100"]` | 92.505 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBN0f8_100×100×100"]` | 17.005 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBN0f8_2048"]` | 14.401 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 123.192 ms (5%) | | 288.41 MiB (1%) | 28 | | `["mapwindow", "cheap f, tiny window"]` | 9.550 μs (5%) | | 8.81 KiB (1%) | 20 | | `["mapwindow", "expensive f"]` | 1.546 ms (5%) | | 1.50 MiB (1%) | 22004 | | `["mapwindow", "extrema"]` | 46.002 μs (5%) | | 45.53 KiB (1%) | 53 | | `["mapwindow", "maximum"]` | 238.612 μs (5%) | | 271.91 KiB (1%) | 4510 | | `["mapwindow", "mean, large window"]` | 2.353 ms (5%) | | 1.70 MiB (1%) | 29560 | | `["mapwindow", "mean, small window"]` | 14.100 μs (5%) | | 10.05 KiB (1%) | 41 | | `["mapwindow", "median!"]` | 683.433 μs (5%) | | 272.06 KiB (1%) | 4514 | | `["mapwindow", "minimum"]` | 239.511 μs (5%) | | 271.94 KiB (1%) | 4511 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 23886 s 0 s 2969 s 141149 s 0 s #2 2095 MHz 119767 s 0 s 8898 s 39509 s 0 s Memory: 6.791389465332031 GB (2099.09375 MB free) Uptime: 1699.0 sec Load Avg: 1.0 1.0 0.876953125 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, skylake-avx512) ``` --- # Runtime information | Runtime Info | | |:--|:--| | BLAS #threads | 2 | | `BLAS.vendor()` | `openblas64` | | `Sys.CPU_THREADS` | 2 | `lscpu` output: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 85 Model name: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz Stepping: 4 CPU MHz: 2095.194 BogoMIPS: 4190.38 Hypervisor vendor: Microsoft Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 1024K L3 cache: 36608K NUMA node0 CPU(s): 0,1 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm mpx avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear | Cpu Property | Value | |:------------------ |:------------------------------------------------------- | | Brand | Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz | | Vendor | :Intel | | Architecture | :Skylake | | Model | Family: 0x06, Model: 0x55, Stepping: 0x04, Type: 0x00 | | Cores | 2 physical cores, 2 logical cores (on executing CPU) | | | No Hyperthreading detected | | Clock Frequencies | Not supported by CPU | | Data Cache | Level 1:3 : (32, 1024, 36608) kbytes | | | 64 byte cache line size | | Address Size | 48 bits virtual, 46 bits physical | | SIMD | 512 bit = 64 byte max. SIMD vector size | | Time Stamp Counter | TSC is accessible via `rdtsc` | | | TSC increased at every clock cycle (non-invariant TSC) | | Perf. Monitoring | Performance Monitoring Counters (PMC) are not supported | | Hypervisor | Yes, Microsoft |
github-actions[bot] commented 3 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmarks: - Target: 11 Oct 2020 - 14:57 - Baseline: 11 Oct 2020 - 15:10 * Package commits: - Target: f873a9 - Baseline: 0c963d * Julia commits: - Target: 539f3c - Baseline: 539f3c * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |------------------------------------------------------|------------------------------|------------------------------| | `["imfilter", "FFT_F32_2048×2048"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_GrayF32_100×100"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_GrayF32_100×100×100"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_GrayF32_2048×2048"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_GrayN0f8_100×100"]` | 1.14 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_GrayN0f8_100×100×100"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "FFT_RGBF32_2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "IIRGaussian_F32_100×100×100"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "IIRGaussian_GrayF32_100×100×100"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_GrayN0f8_100×100"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_GrayN0f8_100×100×100"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_GrayN0f8_2048×2048"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_N0f8_2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_N0f8_2048×2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_RGBF32_100×100"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_RGBF32_2048×2048"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["imfilter", "denselarge_RGBN0f8_2048×2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_F32_100×100"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_F32_2048×2048"]` | 0.95 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_GrayF32_100×100×100"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 1.50 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_N0f8_100×100"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["imfilter", "densesmall_RGBF32_100×100"]` | 0.92 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_RGBF32_100×100×100"]` | 0.94 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "densesmall_RGBF32_2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredlarge_F32_2048"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredlarge_RGBN0f8_100×100×100"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_F32_100×100"]` | 1.15 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayF32_100×100"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 1.16 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 0.94 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_N0f8_100×100"]` | 1.10 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 1.17 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 0.85 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBF32_100×100"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBF32_2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 0.83 (5%) :white_check_mark: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBN0f8_100×100"]` | 1.14 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBN0f8_2048"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["mapwindow", "maximum"]` | 0.20 (5%) :white_check_mark: | 0.19 (1%) :white_check_mark: | | `["mapwindow", "minimum"]` | 0.21 (5%) :white_check_mark: | 0.19 (1%) :white_check_mark: | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ### Target ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 43198 s 0 s 3984 s 75911 s 0 s #2 2294 MHz 42212 s 0 s 3854 s 72677 s 0 s Memory: 6.791393280029297 GB (2181.9140625 MB free) Uptime: 1302.0 sec Load Avg: 1.02978515625 1.01123046875 0.7890625 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, broadwell) ``` ### Baseline ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 113771 s 0 s 8312 s 77309 s 0 s #2 2294 MHz 43977 s 0 s 4084 s 146996 s 0 s Memory: 6.791393280029297 GB (2040.0703125 MB free) Uptime: 2065.0 sec Load Avg: 1.0595703125 1.0361328125 0.95361328125 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, broadwell) ``` --- # Target result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmark: 11 Oct 2020 - 14:57 * Package commit: f873a9 * Julia commit: 539f3c * Julia command flags: None * Environment variables: None ## Results Below is a table of this job's results, obtained by running the benchmarks. The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to index into the BaseBenchmarks suite to retrieve the corresponding benchmarks. The percentages accompanying time and memory values in the below table are noise tolerances. The "true" time/memory value for a given benchmark is expected to fall within this percentage of the reported value. An empty cell means that the value was zero. | ID | time | GC time | memory | allocations | |------------------------------------------------------|----------------:|-----------:|----------------:|------------:| | `["imfilter", "FFT_F32_100×100"]` | 581.706 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_F32_100×100×100"]` | 102.892 ms (5%) | 2.716 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_F32_2048"]` | 342.101 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_F32_2048×2048"]` | 505.258 ms (5%) | 4.657 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_GrayF32_100×100"]` | 632.203 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayF32_100×100×100"]` | 100.896 ms (5%) | 2.682 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayF32_2048"]` | 328.205 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayF32_2048×2048"]` | 507.845 ms (5%) | 4.351 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_GrayN0f8_100×100"]` | 603.509 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayN0f8_100×100×100"]` | 104.134 ms (5%) | 2.814 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayN0f8_2048"]` | 337.701 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayN0f8_2048×2048"]` | 444.211 ms (5%) | 5.818 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_N0f8_100×100"]` | 581.004 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_N0f8_100×100×100"]` | 101.338 ms (5%) | 2.668 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_N0f8_2048"]` | 322.801 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_N0f8_2048×2048"]` | 437.373 ms (5%) | 5.602 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_RGBF32_100×100"]` | 1.755 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBF32_100×100×100"]` | 446.601 ms (5%) | 4.444 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBF32_2048"]` | 579.603 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBF32_2048×2048"]` | 1.651 s (5%) | 36.900 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "FFT_RGBN0f8_100×100"]` | 1.870 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBN0f8_100×100×100"]` | 390.359 ms (5%) | 6.742 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBN0f8_2048"]` | 541.303 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBN0f8_2048×2048"]` | 1.523 s (5%) | 34.565 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "IIRGaussian_F32_100×100"]` | 151.502 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_F32_100×100×100"]` | 21.537 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_F32_2048"]` | 22.500 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_F32_2048×2048"]` | 66.872 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayF32_100×100"]` | 150.701 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayF32_100×100×100"]` | 22.276 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayF32_2048"]` | 22.400 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayF32_2048×2048"]` | 63.325 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100"]` | 155.100 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100×100"]` | 20.305 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayN0f8_2048"]` | 23.500 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayN0f8_2048×2048"]` | 66.503 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_N0f8_100×100"]` | 155.500 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_N0f8_100×100×100"]` | 20.612 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_N0f8_2048"]` | 23.300 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_N0f8_2048×2048"]` | 64.014 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBF32_100×100"]` | 268.304 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBF32_100×100×100"]` | 45.584 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBF32_2048"]` | 31.600 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBF32_2048×2048"]` | 140.145 ms (5%) | 3.145 ms | 144.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100"]` | 278.201 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100×100"]` | 42.873 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBN0f8_2048"]` | 32.900 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBN0f8_2048×2048"]` | 139.810 ms (5%) | 2.859 ms | 144.25 MiB (1%) | 2075 | | `["imfilter", "denselarge_F32_100×100"]` | 1.363 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_F32_100×100×100"]` | 2.406 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_F32_2048"]` | 21.000 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_F32_2048×2048"]` | 707.964 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayF32_100×100"]` | 1.363 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayF32_100×100×100"]` | 2.362 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayF32_2048"]` | 17.700 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayF32_2048×2048"]` | 709.836 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayN0f8_100×100"]` | 1.444 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayN0f8_100×100×100"]` | 2.536 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayN0f8_2048"]` | 17.700 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayN0f8_2048×2048"]` | 776.410 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_N0f8_100×100"]` | 1.363 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_N0f8_100×100×100"]` | 2.370 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_N0f8_2048"]` | 23.100 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_N0f8_2048×2048"]` | 771.177 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBF32_100×100"]` | 1.653 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBF32_100×100×100"]` | 3.863 s (5%) | 2.316 ms | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBF32_2048"]` | 35.600 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBF32_2048×2048"]` | 901.030 ms (5%) | 1.560 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBN0f8_100×100"]` | 1.524 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBN0f8_100×100×100"]` | 3.613 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBN0f8_2048"]` | 35.000 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBN0f8_2048×2048"]` | 923.506 ms (5%) | 1.493 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "densesmall_F32_100×100"]` | 93.200 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_F32_100×100×100"]` | 42.447 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_F32_2048"]` | 9.233 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_F32_2048×2048"]` | 45.240 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayF32_100×100"]` | 86.801 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayF32_100×100×100"]` | 43.905 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayF32_2048"]` | 9.567 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 44.173 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 93.801 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayN0f8_100×100×100"]` | 39.623 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayN0f8_2048"]` | 10.033 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 65.428 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_N0f8_100×100"]` | 97.501 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_N0f8_100×100×100"]` | 41.873 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_N0f8_2048"]` | 10.025 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_N0f8_2048×2048"]` | 47.437 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBF32_100×100"]` | 175.702 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBF32_100×100×100"]` | 61.912 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBF32_2048"]` | 16.700 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBF32_2048×2048"]` | 148.857 ms (5%) | 3.210 ms | 192.22 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBN0f8_100×100"]` | 184.202 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBN0f8_100×100×100"]` | 66.790 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBN0f8_2048"]` | 16.700 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBN0f8_2048×2048"]` | 151.456 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100"]` | 637.706 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100×100"]` | 159.280 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_F32_2048"]` | 57.300 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_F32_2048×2048"]` | 298.178 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayF32_100×100"]` | 636.905 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayF32_100×100×100"]` | 144.484 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayF32_2048"]` | 52.801 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayF32_2048×2048"]` | 297.283 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayN0f8_100×100"]` | 665.704 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayN0f8_100×100×100"]` | 147.876 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayN0f8_2048"]` | 53.400 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayN0f8_2048×2048"]` | 290.517 ms (5%) | 2.515 ms | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_N0f8_100×100"]` | 665.403 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_N0f8_100×100×100"]` | 155.505 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_N0f8_2048"]` | 53.301 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_N0f8_2048×2048"]` | 293.947 ms (5%) | 3.021 ms | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBF32_100×100"]` | 946.307 μs (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBF32_100×100×100"]` | 230.664 ms (5%) | | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBF32_2048"]` | 79.300 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBF32_2048×2048"]` | 570.401 ms (5%) | 727.003 μs | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBN0f8_100×100"]` | 1.061 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBN0f8_100×100×100"]` | 249.657 ms (5%) | | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBN0f8_2048"]` | 80.501 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBN0f8_2048×2048"]` | 529.379 ms (5%) | 3.169 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredsmall_F32_100×100"]` | 64.500 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 9.594 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_F32_2048"]` | 9.400 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_F32_2048×2048"]` | 41.307 ms (5%) | 3.328 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayF32_100×100"]` | 64.100 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayF32_100×100×100"]` | 8.730 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayF32_2048"]` | 9.050 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 60.563 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayN0f8_100×100"]` | 61.400 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayN0f8_100×100×100"]` | 8.580 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayN0f8_2048"]` | 9.350 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 29.642 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_N0f8_100×100"]` | 65.000 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 9.996 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_N0f8_2048"]` | 9.400 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 45.101 ms (5%) | 2.345 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBF32_100×100"]` | 96.901 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBF32_100×100×100"]` | 20.714 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBF32_2048"]` | 19.200 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 123.509 ms (5%) | 628.307 μs | 288.41 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBN0f8_100×100"]` | 107.702 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBN0f8_100×100×100"]` | 21.737 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBN0f8_2048"]` | 17.400 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 151.949 ms (5%) | | 288.41 MiB (1%) | 28 | | `["mapwindow", "cheap f, tiny window"]` | 9.700 μs (5%) | | 8.81 KiB (1%) | 20 | | `["mapwindow", "expensive f"]` | 1.497 ms (5%) | | 1.50 MiB (1%) | 22004 | | `["mapwindow", "extrema"]` | 57.000 μs (5%) | | 45.53 KiB (1%) | 53 | | `["mapwindow", "maximum"]` | 58.200 μs (5%) | | 52.72 KiB (1%) | 54 | | `["mapwindow", "mean, large window"]` | 3.125 ms (5%) | | 1.70 MiB (1%) | 29560 | | `["mapwindow", "mean, small window"]` | 14.900 μs (5%) | | 10.05 KiB (1%) | 41 | | `["mapwindow", "median!"]` | 613.705 μs (5%) | | 272.09 KiB (1%) | 4515 | | `["mapwindow", "minimum"]` | 58.001 μs (5%) | | 52.72 KiB (1%) | 54 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 43198 s 0 s 3984 s 75911 s 0 s #2 2294 MHz 42212 s 0 s 3854 s 72677 s 0 s Memory: 6.791393280029297 GB (2181.9140625 MB free) Uptime: 1302.0 sec Load Avg: 1.02978515625 1.01123046875 0.7890625 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, broadwell) ``` --- # Baseline result # Benchmark Report for */home/runner/work/ImageFiltering.jl/ImageFiltering.jl* ## Job Properties * Time of benchmark: 11 Oct 2020 - 15:10 * Package commit: 0c963d * Julia commit: 539f3c * Julia command flags: None * Environment variables: None ## Results Below is a table of this job's results, obtained by running the benchmarks. The values listed in the `ID` column have the structure `[parent_group, child_group, ..., key]`, and can be used to index into the BaseBenchmarks suite to retrieve the corresponding benchmarks. The percentages accompanying time and memory values in the below table are noise tolerances. The "true" time/memory value for a given benchmark is expected to fall within this percentage of the reported value. An empty cell means that the value was zero. | ID | time | GC time | memory | allocations | |------------------------------------------------------|----------------:|----------:|----------------:|------------:| | `["imfilter", "FFT_F32_100×100"]` | 576.503 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_F32_100×100×100"]` | 98.704 ms (5%) | 2.972 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_F32_2048"]` | 326.802 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_F32_2048×2048"]` | 480.222 ms (5%) | 5.110 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_GrayF32_100×100"]` | 571.303 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayF32_100×100×100"]` | 95.800 ms (5%) | 2.990 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayF32_2048"]` | 328.602 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayF32_2048×2048"]` | 477.961 ms (5%) | 3.911 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_GrayN0f8_100×100"]` | 529.802 μs (5%) | | 1.35 MiB (1%) | 166 | | `["imfilter", "FFT_GrayN0f8_100×100×100"]` | 98.494 ms (5%) | 2.978 ms | 169.15 MiB (1%) | 197 | | `["imfilter", "FFT_GrayN0f8_2048"]` | 334.001 μs (5%) | | 181.55 KiB (1%) | 150 | | `["imfilter", "FFT_GrayN0f8_2048×2048"]` | 465.626 ms (5%) | 6.746 ms | 397.06 MiB (1%) | 179 | | `["imfilter", "FFT_N0f8_100×100"]` | 577.507 μs (5%) | | 1.35 MiB (1%) | 178 | | `["imfilter", "FFT_N0f8_100×100×100"]` | 96.758 ms (5%) | 2.674 ms | 169.15 MiB (1%) | 213 | | `["imfilter", "FFT_N0f8_2048"]` | 320.702 μs (5%) | | 181.92 KiB (1%) | 159 | | `["imfilter", "FFT_N0f8_2048×2048"]` | 447.559 ms (5%) | 6.048 ms | 397.06 MiB (1%) | 191 | | `["imfilter", "FFT_RGBF32_100×100"]` | 1.676 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBF32_100×100×100"]` | 433.955 ms (5%) | 3.692 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBF32_2048"]` | 532.303 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBF32_2048×2048"]` | 1.603 s (5%) | 56.533 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "FFT_RGBN0f8_100×100"]` | 1.841 ms (5%) | | 3.27 MiB (1%) | 185 | | `["imfilter", "FFT_RGBN0f8_100×100×100"]` | 386.473 ms (5%) | 7.454 ms | 410.41 MiB (1%) | 207 | | `["imfilter", "FFT_RGBN0f8_2048"]` | 528.803 μs (5%) | | 385.42 KiB (1%) | 158 | | `["imfilter", "FFT_RGBN0f8_2048×2048"]` | 1.543 s (5%) | 38.418 ms | 972.07 MiB (1%) | 198 | | `["imfilter", "IIRGaussian_F32_100×100"]` | 150.801 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_F32_100×100×100"]` | 19.889 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_F32_2048"]` | 22.400 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_F32_2048×2048"]` | 64.510 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayF32_100×100"]` | 151.301 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayF32_100×100×100"]` | 20.699 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayF32_2048"]` | 22.400 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayF32_2048×2048"]` | 64.597 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100"]` | 154.700 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_GrayN0f8_100×100×100"]` | 20.852 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_GrayN0f8_2048"]` | 23.200 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_GrayN0f8_2048×2048"]` | 63.892 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_N0f8_100×100"]` | 153.801 μs (5%) | | 131.13 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_N0f8_100×100×100"]` | 20.092 ms (5%) | | 16.34 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_N0f8_2048"]` | 23.300 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "IIRGaussian_N0f8_2048×2048"]` | 64.226 ms (5%) | | 48.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBF32_100×100"]` | 267.601 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBF32_100×100×100"]` | 43.771 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBF32_2048"]` | 31.400 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBF32_2048×2048"]` | 141.456 ms (5%) | 3.047 ms | 144.25 MiB (1%) | 2075 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100"]` | 277.802 μs (5%) | | 365.50 KiB (1%) | 127 | | `["imfilter", "IIRGaussian_RGBN0f8_100×100×100"]` | 43.113 ms (5%) | | 46.86 MiB (1%) | 10139 | | `["imfilter", "IIRGaussian_RGBN0f8_2048"]` | 33.100 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "IIRGaussian_RGBN0f8_2048×2048"]` | 145.680 ms (5%) | 2.947 ms | 144.25 MiB (1%) | 2075 | | `["imfilter", "denselarge_F32_100×100"]` | 1.362 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_F32_100×100×100"]` | 2.374 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_F32_2048"]` | 21.300 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_F32_2048×2048"]` | 711.101 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayF32_100×100"]` | 1.363 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayF32_100×100×100"]` | 2.378 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayF32_2048"]` | 17.700 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayF32_2048×2048"]` | 701.837 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_GrayN0f8_100×100"]` | 1.361 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_GrayN0f8_100×100×100"]` | 2.379 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_GrayN0f8_2048"]` | 17.700 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_GrayN0f8_2048×2048"]` | 725.736 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_N0f8_100×100"]` | 1.364 ms (5%) | | 179.34 KiB (1%) | 24 | | `["imfilter", "denselarge_N0f8_100×100×100"]` | 2.379 s (5%) | | 18.35 MiB (1%) | 34 | | `["imfilter", "denselarge_N0f8_2048"]` | 21.200 μs (5%) | | 49.08 KiB (1%) | 14 | | `["imfilter", "denselarge_N0f8_2048×2048"]` | 710.344 ms (5%) | | 64.41 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBF32_100×100"]` | 1.526 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBF32_100×100×100"]` | 3.744 s (5%) | 2.031 ms | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBF32_2048"]` | 34.901 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBF32_2048×2048"]` | 845.849 ms (5%) | | 193.16 MiB (1%) | 26 | | `["imfilter", "denselarge_RGBN0f8_100×100"]` | 1.524 ms (5%) | | 531.59 KiB (1%) | 24 | | `["imfilter", "denselarge_RGBN0f8_100×100×100"]` | 3.763 s (5%) | | 55.05 MiB (1%) | 34 | | `["imfilter", "denselarge_RGBN0f8_2048"]` | 35.101 μs (5%) | | 113.22 KiB (1%) | 15 | | `["imfilter", "denselarge_RGBN0f8_2048×2048"]` | 844.009 ms (5%) | 3.200 ms | 193.16 MiB (1%) | 26 | | `["imfilter", "densesmall_F32_100×100"]` | 88.101 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_F32_100×100×100"]` | 41.772 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_F32_2048"]` | 9.200 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_F32_2048×2048"]` | 47.621 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayF32_100×100"]` | 87.500 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayF32_100×100×100"]` | 40.587 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayF32_2048"]` | 9.733 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayF32_2048×2048"]` | 41.792 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_GrayN0f8_100×100"]` | 85.700 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_GrayN0f8_100×100×100"]` | 41.536 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_GrayN0f8_2048"]` | 10.033 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_GrayN0f8_2048×2048"]` | 43.632 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_N0f8_100×100"]` | 87.100 μs (5%) | | 162.31 KiB (1%) | 24 | | `["imfilter", "densesmall_N0f8_100×100×100"]` | 42.225 ms (5%) | | 15.73 MiB (1%) | 34 | | `["imfilter", "densesmall_N0f8_2048"]` | 9.925 μs (5%) | | 32.94 KiB (1%) | 13 | | `["imfilter", "densesmall_N0f8_2048×2048"]` | 45.368 ms (5%) | | 64.10 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBF32_100×100"]` | 191.002 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBF32_100×100×100"]` | 66.181 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBF32_2048"]` | 15.300 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBF32_2048×2048"]` | 154.227 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "densesmall_RGBN0f8_100×100"]` | 187.601 μs (5%) | | 481.13 KiB (1%) | 24 | | `["imfilter", "densesmall_RGBN0f8_100×100×100"]` | 63.762 ms (5%) | | 47.18 MiB (1%) | 34 | | `["imfilter", "densesmall_RGBN0f8_2048"]` | 17.000 μs (5%) | | 64.84 KiB (1%) | 15 | | `["imfilter", "densesmall_RGBN0f8_2048×2048"]` | 150.948 ms (5%) | | 192.22 MiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100"]` | 637.803 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_F32_100×100×100"]` | 155.330 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_F32_2048"]` | 52.900 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_F32_2048×2048"]` | 298.550 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayF32_100×100"]` | 637.308 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayF32_100×100×100"]` | 147.865 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayF32_2048"]` | 52.901 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayF32_2048×2048"]` | 295.683 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_GrayN0f8_100×100"]` | 640.404 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_GrayN0f8_100×100×100"]` | 147.116 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_GrayN0f8_2048"]` | 53.300 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_GrayN0f8_2048×2048"]` | 299.193 ms (5%) | 3.246 ms | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_N0f8_100×100"]` | 659.503 μs (5%) | | 196.39 KiB (1%) | 26 | | `["imfilter", "factoredlarge_N0f8_100×100×100"]` | 148.789 ms (5%) | | 35.22 MiB (1%) | 38 | | `["imfilter", "factoredlarge_N0f8_2048"]` | 53.301 μs (5%) | | 33.59 KiB (1%) | 13 | | `["imfilter", "factoredlarge_N0f8_2048×2048"]` | 298.265 ms (5%) | | 49.30 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBF32_100×100"]` | 946.512 μs (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBF32_100×100×100"]` | 238.103 ms (5%) | | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBF32_2048"]` | 79.200 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBF32_2048×2048"]` | 547.273 ms (5%) | | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredlarge_RGBN0f8_100×100"]` | 1.028 ms (5%) | | 580.77 KiB (1%) | 26 | | `["imfilter", "factoredlarge_RGBN0f8_100×100×100"]` | 235.165 ms (5%) | 1.872 ms | 105.66 MiB (1%) | 38 | | `["imfilter", "factoredlarge_RGBN0f8_2048"]` | 80.601 μs (5%) | | 65.81 KiB (1%) | 15 | | `["imfilter", "factoredlarge_RGBN0f8_2048×2048"]` | 541.186 ms (5%) | 4.627 ms | 147.82 MiB (1%) | 28 | | `["imfilter", "factoredsmall_F32_100×100"]` | 56.000 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_F32_100×100×100"]` | 8.681 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_F32_2048"]` | 9.580 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_F32_2048×2048"]` | 41.562 ms (5%) | 3.862 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayF32_100×100"]` | 57.501 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayF32_100×100×100"]` | 8.641 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayF32_2048"]` | 9.025 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayF32_2048×2048"]` | 52.254 ms (5%) | 1.755 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_GrayN0f8_100×100"]` | 60.901 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_GrayN0f8_100×100×100"]` | 8.939 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_GrayN0f8_2048"]` | 9.425 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_GrayN0f8_2048×2048"]` | 31.469 ms (5%) | | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_N0f8_100×100"]` | 59.000 μs (5%) | | 243.70 KiB (1%) | 26 | | `["imfilter", "factoredsmall_N0f8_100×100×100"]` | 8.521 ms (5%) | | 31.92 MiB (1%) | 38 | | `["imfilter", "factoredsmall_N0f8_2048"]` | 9.400 μs (5%) | | 48.89 KiB (1%) | 14 | | `["imfilter", "factoredsmall_N0f8_2048×2048"]` | 52.983 ms (5%) | 2.626 ms | 96.16 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBF32_100×100"]` | 91.201 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBF32_100×100×100"]` | 20.249 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBF32_2048"]` | 17.600 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBF32_2048×2048"]` | 148.181 ms (5%) | 4.389 ms | 288.41 MiB (1%) | 28 | | `["imfilter", "factoredsmall_RGBN0f8_100×100"]` | 94.401 μs (5%) | | 725.08 KiB (1%) | 26 | | `["imfilter", "factoredsmall_RGBN0f8_100×100×100"]` | 20.798 ms (5%) | | 95.76 MiB (1%) | 38 | | `["imfilter", "factoredsmall_RGBN0f8_2048"]` | 15.500 μs (5%) | | 112.84 KiB (1%) | 15 | | `["imfilter", "factoredsmall_RGBN0f8_2048×2048"]` | 139.227 ms (5%) | 3.496 ms | 288.41 MiB (1%) | 28 | | `["mapwindow", "cheap f, tiny window"]` | 9.925 μs (5%) | | 8.81 KiB (1%) | 20 | | `["mapwindow", "expensive f"]` | 1.488 ms (5%) | | 1.50 MiB (1%) | 22004 | | `["mapwindow", "extrema"]` | 56.400 μs (5%) | | 45.53 KiB (1%) | 53 | | `["mapwindow", "maximum"]` | 284.303 μs (5%) | | 271.91 KiB (1%) | 4510 | | `["mapwindow", "mean, large window"]` | 3.188 ms (5%) | | 1.70 MiB (1%) | 29560 | | `["mapwindow", "mean, small window"]` | 15.200 μs (5%) | | 10.05 KiB (1%) | 41 | | `["mapwindow", "median!"]` | 615.207 μs (5%) | | 272.06 KiB (1%) | 4514 | | `["mapwindow", "minimum"]` | 278.703 μs (5%) | | 271.94 KiB (1%) | 4511 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["imfilter"]` - `["mapwindow"]` ## Julia versioninfo ``` Julia Version 1.5.2 Commit 539f3ce943 (2020-09-23 23:17 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 18.04.5 LTS uname: Linux 5.4.0-1026-azure #26~18.04.1-Ubuntu SMP Thu Sep 10 16:19:25 UTC 2020 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 113771 s 0 s 8312 s 77309 s 0 s #2 2294 MHz 43977 s 0 s 4084 s 146996 s 0 s Memory: 6.791393280029297 GB (2040.0703125 MB free) Uptime: 2065.0 sec Load Avg: 1.0595703125 1.0361328125 0.95361328125 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-9.0.1 (ORCJIT, broadwell) ``` --- # Runtime information | Runtime Info | | |:--|:--| | BLAS #threads | 2 | | `BLAS.vendor()` | `openblas64` | | `Sys.CPU_THREADS` | 2 | `lscpu` output: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 NUMA node(s): 1 Vendor ID: GenuineIntel CPU family: 6 Model: 79 Model name: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz Stepping: 1 CPU MHz: 2294.685 BogoMIPS: 4589.37 Hypervisor vendor: Microsoft Virtualization type: full L1d cache: 32K L1i cache: 32K L2 cache: 256K L3 cache: 51200K NUMA node0 CPU(s): 0,1 Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt md_clear | Cpu Property | Value | |:------------------ |:------------------------------------------------------- | | Brand | Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz | | Vendor | :Intel | | Architecture | :Broadwell | | Model | Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00 | | Cores | 2 physical cores, 2 logical cores (on executing CPU) | | | No Hyperthreading detected | | Clock Frequencies | Not supported by CPU | | Data Cache | Level 1:3 : (32, 256, 51200) kbytes | | | 64 byte cache line size | | Address Size | 48 bits virtual, 46 bits physical | | SIMD | 256 bit = 32 byte max. SIMD vector size | | Time Stamp Counter | TSC is accessible via `rdtsc` | | | TSC increased at every clock cycle (non-invariant TSC) | | Perf. Monitoring | Performance Monitoring Counters (PMC) are not supported | | Hypervisor | Yes, Microsoft |
timholy commented 3 years ago

The speed improvement or worsening depends on the window size; I worry a 3x3 window might not show a speedup. The Lemire algorithm has a different order than naive minimum/maximum. The naive versions are O(M^d*N) (in d dimensions, where M is the window size and N the number of pixels) whereas my hazy memory suggests Lemire is O(MlogM*N). For small windows the constant factor could be important.

The other issue is that if you want both the max & min, it's clearly better to call mapwindow(extrema, ...) once and then extract both results.

For these reasons I'd avoided implementing these shortcuts, in essence hoping to convince people to use extrema directly. But that may not be documented, and may not even be a good idea. So this PR may be a really good idea, but I thought you should know why we don't have this already.

johnnychen94 commented 3 years ago

It is still more efficient in 3*3 case, probably contributed by less memory allocation.

julia> @btime mapwindow(maximum, $img2d, (3,3));
  40.210 μs (54 allocations: 52.56 KiB)

julia> @btime mapwindow(f, $img2d, (3, 3));
  109.429 μs (2350 allocations: 141.25 KiB)

I'll need to read the paper first to see if there's a better way. I mean, to only compute the maximum in a similar way. Unsure of it now.

timholy commented 3 years ago

Looks like the performance issue with maximum isn't memory allocation (though I haven't taken the time to figure out where that comes from, it's a bit surprising), it's that it is using a more careful max. The results for img2d = rand(10,10); img2d[5,5] = NaN seem to differ for a 3x3 window. :frowning:

johnnychen94 commented 3 years ago

Playing with https://github.com/sairus7/MaxMinFilters.jl and it turns out to be more performant than ImageFiltering's implementation. I guess this indicates that there's still room for optimization.

julia> img2d = randn(30,30);

julia> @btime mapwindow(extrema, $img2d, (3,1));
  21.749 μs (47 allocations: 44.91 KiB)

julia> @btime movmaxmin($img2d, 3);
  5.271 μs (4 allocations: 14.63 KiB)

MaxMinFilters does not apply to the multidimensional case, though; it simply treats it as a vector. I'll see what I can do to get things better here. A re-reimplementation, probably, in an independent package and get used by ImageFiltering.jl.

Just took the first read on the paper and it occurs that a maximum/minimum filter is possible if we only apply the wedge update on one side. So yeah, it's doable to for mapwindow to also support maximum/minimum.

Tweaking the implementation doesn't look like an easy job, so I'll revisit this when I finish my WNNM project. Probably months later, though...

timholy commented 3 years ago

A re-reimplementation, probably, in an independent package and get used by ImageFiltering.jl.

I'm unsure it should be a separate package...if anything, I'm inclined to go the other way (https://github.com/JuliaImages/Images.jl/issues/898). Well, I guess it could be a separate package, it's the separate repo that I find annoying.

timholy commented 3 years ago

The main reason they differ in performance is because this implementation supports multiple dimensions. More than half the time is due to this one comprehension: https://github.com/JuliaImages/ImageFiltering.jl/blob/0c963dc6bc4c465c95ef6a6bb3a49d030d3bbfce/src/mapwindow.jl#L375

But that's the foundation for multidimensional support, as it allows the filter to be separable. Almost all the rest is due internal methods of DataStructures.CircularDeqeue. I wonder if we'd get better performance out of an immutable variant?

Anyway, I don't think we should be so quick to abandon the current implementation. There might be a quick way to make the 1d case not need the comprehension, for example.