Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

johnnychen94
Copy link
Member

@johnnychen94 johnnychen94 commented Oct 11, 2020

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 JuliaImages/Images.jl#918.

cc @Dsantra92

@codecov
Copy link

codecov bot commented Oct 11, 2020

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%) ⬇️

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.

docs/demos/filters/min_max_filter.jl Outdated Show resolved Hide resolved
docs/demos/filters/min_max_filter.jl Outdated Show resolved Hide resolved
docs/demos/filters/min_max_filter.jl Outdated Show resolved Hide resolved
@github-actions
Copy link
Contributor

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 ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). 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%) ✅ 1.00 (1%)
["imfilter", "FFT_N0f8_100×100×100"] 1.05 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_RGBF32_100×100×100"] 0.90 (5%) ✅ 1.00 (1%)
["imfilter", "denselarge_F32_2048"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_GrayF32_2048"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_F32_2048×2048"] 0.67 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_GrayF32_2048"] 0.93 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_GrayF32_2048×2048"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_GrayN0f8_100×100"] 1.05 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_GrayN0f8_2048"] 0.86 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_GrayN0f8_2048×2048"] 0.86 (5%) ✅ 1.00 (1%)
["imfilter", "factoredlarge_F32_100×100"] 1.10 (5%) ❌ 1.00 (1%)
["imfilter", "factoredlarge_F32_2048×2048"] 1.07 (5%) ❌ 1.00 (1%)
["imfilter", "factoredlarge_GrayF32_2048"] 0.95 (5%) ✅ 1.00 (1%)
["imfilter", "factoredlarge_N0f8_100×100"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "factoredlarge_RGBF32_100×100"] 0.92 (5%) ✅ 1.00 (1%)
["imfilter", "factoredlarge_RGBF32_2048×2048"] 0.87 (5%) ✅ 1.00 (1%)
["imfilter", "factoredlarge_RGBN0f8_100×100"] 0.92 (5%) ✅ 1.00 (1%)
["imfilter", "factoredlarge_RGBN0f8_2048×2048"] 0.88 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_F32_100×100"] 0.94 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_F32_100×100×100"] 1.11 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_F32_2048×2048"] 0.52 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_GrayF32_2048"] 0.87 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_GrayF32_2048×2048"] 1.42 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_GrayN0f8_2048"] 0.93 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_GrayN0f8_2048×2048"] 0.52 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_N0f8_100×100×100"] 1.11 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_N0f8_2048×2048"] 0.46 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_RGBF32_2048×2048"] 0.63 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_RGBN0f8_2048×2048"] 0.82 (5%) ✅ 1.00 (1%)
["mapwindow", "cheap f, tiny window"] 1.06 (5%) ❌ 1.00 (1%)
["mapwindow", "extrema"] 1.07 (5%) ❌ 1.00 (1%)
["mapwindow", "maximum"] 0.21 (5%) ✅ 0.19 (1%) ✅
["mapwindow", "minimum"] 0.21 (5%) ✅ 0.19 (1%) ✅

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
Copy link
Contributor

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 ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). 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%) ❌ 1.00 (1%)
["imfilter", "FFT_GrayF32_100×100"] 1.11 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_GrayF32_100×100×100"] 1.05 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_GrayF32_2048×2048"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_GrayN0f8_100×100"] 1.14 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_GrayN0f8_100×100×100"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "FFT_RGBF32_2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "IIRGaussian_F32_100×100×100"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "IIRGaussian_GrayF32_100×100×100"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_GrayN0f8_100×100"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_GrayN0f8_100×100×100"] 1.07 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_GrayN0f8_2048×2048"] 1.07 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_N0f8_2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_N0f8_2048×2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_RGBF32_100×100"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_RGBF32_2048×2048"] 1.07 (5%) ❌ 1.00 (1%)
["imfilter", "denselarge_RGBN0f8_2048×2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_F32_100×100"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_F32_2048×2048"] 0.95 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_GrayF32_100×100×100"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_GrayF32_2048×2048"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_GrayN0f8_100×100"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_GrayN0f8_2048×2048"] 1.50 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_N0f8_100×100"] 1.12 (5%) ❌ 1.00 (1%)
["imfilter", "densesmall_RGBF32_100×100"] 0.92 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_RGBF32_100×100×100"] 0.94 (5%) ✅ 1.00 (1%)
["imfilter", "densesmall_RGBF32_2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "factoredlarge_F32_2048"] 1.08 (5%) ❌ 1.00 (1%)
["imfilter", "factoredlarge_RGBN0f8_100×100×100"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_F32_100×100"] 1.15 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_F32_100×100×100"] 1.11 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_GrayF32_100×100"] 1.11 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_GrayF32_2048×2048"] 1.16 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_GrayN0f8_2048×2048"] 0.94 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_N0f8_100×100"] 1.10 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_N0f8_100×100×100"] 1.17 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_N0f8_2048×2048"] 0.85 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_RGBF32_100×100"] 1.06 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_RGBF32_2048"] 1.09 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_RGBF32_2048×2048"] 0.83 (5%) ✅ 1.00 (1%)
["imfilter", "factoredsmall_RGBN0f8_100×100"] 1.14 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_RGBN0f8_2048"] 1.12 (5%) ❌ 1.00 (1%)
["imfilter", "factoredsmall_RGBN0f8_2048×2048"] 1.09 (5%) ❌ 1.00 (1%)
["mapwindow", "maximum"] 0.20 (5%) ✅ 0.19 (1%) ✅
["mapwindow", "minimum"] 0.21 (5%) ✅ 0.19 (1%) ✅

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
Copy link
Member

timholy commented Oct 11, 2020

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
Copy link
Member Author

johnnychen94 commented Oct 11, 2020

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
Copy link
Member

timholy commented Oct 11, 2020

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. 😦

@johnnychen94
Copy link
Member Author

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
Copy link
Member

timholy commented Oct 12, 2020

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 (JuliaImages/Images.jl#898). Well, I guess it could be a separate package, it's the separate repo that I find annoying.

@timholy
Copy link
Member

timholy commented Oct 12, 2020

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:

_extrema_filter!([(a,a) for a in A], window...)

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants