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

Use IndirectArrays #47

Merged
merged 22 commits into from
Nov 25, 2021
Merged

Use IndirectArrays #47

merged 22 commits into from
Nov 25, 2021

Conversation

adrhill
Copy link
Collaborator

@adrhill adrhill commented Nov 13, 2021

Closes #28

All internal dithering algorithms (binarydither, colordither) now return index matrices for construction of IndirectArrays in dither.
For binarydither, I've left the code to return 0 for black and 1 for white, as I thought the indices 1 and 2 would be too confusing. we output const indices INDEX_BLACK and INDEX_WHITE.

Adds dependency on IndirectArrays, removes dependency on TiledIteration.

@codecov
Copy link

codecov bot commented Nov 13, 2021

Codecov Report

Merging #47 (b88dbcd) into master (a7d6ff1) will decrease coverage by 2.67%.
The diff coverage is 85.54%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #47      +/-   ##
==========================================
- Coverage   90.99%   88.31%   -2.68%     
==========================================
  Files          14       15       +1     
  Lines         222      231       +9     
==========================================
+ Hits          202      204       +2     
- Misses         20       27       +7     
Impacted Files Coverage Δ
src/DitherPunk.jl 100.00% <ø> (ø)
src/api/color.jl 61.90% <61.90%> (ø)
src/api/binary.jl 82.60% <82.60%> (ø)
src/closest_color.jl 100.00% <100.00%> (ø)
src/clustering.jl 100.00% <100.00%> (ø)
src/colorschemes.jl 100.00% <100.00%> (ø)
src/error_diffusion.jl 100.00% <100.00%> (ø)
src/ordered.jl 93.33% <100.00%> (-3.22%) ⬇️
src/threshold.jl 90.90% <100.00%> (-1.40%) ⬇️
src/utils.jl 55.55% <100.00%> (ø)
... and 1 more

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 a7d6ff1...b88dbcd. Read the comment docs.

@adrhill adrhill added the run benchmark Run benchmark CI action label Nov 13, 2021
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 13 Nov 2021 - 12:49
    • Baseline: 13 Nov 2021 - 12:52
  • Package commits:
    • Target: 5bb114
    • Baseline: a7d6ff
  • Julia commits:
    • Target: ae8452
    • Baseline: ae8452
  • 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
["closest color", "binary inplace"] 5.80 (5%) ❌ 8.18 (1%) ❌
["closest color", "binary new"] 5.86 (5%) ❌ 8.18 (1%) ❌
["closest color", "per-channel inplace"] 1.12 (5%) ❌ 18.86 (1%) ❌
["closest color", "per-channel new"] 1.05 (5%) ❌ 18.86 (1%) ❌
["error diffusion", "binary inplace"] 2.33 (5%) ❌ 4.00 (1%) ❌
["error diffusion", "binary new"] 2.19 (5%) ❌ 4.00 (1%) ❌
["error diffusion", "color inplace"] 1.06 (5%) ❌ 1.07 (1%) ❌
["error diffusion", "per-channel inplace"] 1.63 (5%) ❌ 6.13 (1%) ❌
["error diffusion", "per-channel new"] 1.65 (5%) ❌ 6.13 (1%) ❌
["ordered dithering", "binary inplace"] 2.63 (5%) ❌ 15.71 (1%) ❌
["ordered dithering", "binary new"] 2.19 (5%) ❌ 15.71 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.71 (5%) ❌ 26.21 (1%) ❌
["ordered dithering", "per-channel new"] 1.55 (5%) ❌ 26.21 (1%) ❌
["threshold dithering", "binary inplace"] 9.39 (5%) ❌ 4.59 (1%) ❌
["threshold dithering", "binary new"] 9.05 (5%) ❌ 4.59 (1%) ❌
["threshold dithering", "per-channel inplace"] 0.97 (5%) 9.92 (1%) ❌
["threshold dithering", "per-channel new"] 1.02 (5%) 9.92 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       3585 s          1 s        180 s       4492 s          0 s
       #2  2294 MHz        845 s          2 s        174 s       7280 s          0 s
       
  Memory: 6.788990020751953 GB (3330.2421875 MB free)
  Uptime: 832.0 sec
  Load Avg:  1.0  0.87  0.48
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       4777 s          1 s        192 s       4679 s          0 s
       #2  2294 MHz       1043 s          2 s        183 s       8464 s          0 s
       
  Memory: 6.788990020751953 GB (3329.65625 MB free)
  Uptime: 972.0 sec
  Load Avg:  1.0  0.92  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 13 Nov 2021 - 12:49
  • Package commit: 5bb114
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 198.399 μs (5%) 524.53 KiB (1%) 6
["closest color", "binary new"] 158.100 μs (5%) 524.53 KiB (1%) 6
["closest color", "color inplace"] 319.494 ms (5%) 8.204 ms 116.50 MiB (1%) 7143427
["closest color", "color new"] 304.053 ms (5%) 6.609 ms 116.48 MiB (1%) 7141939
["closest color", "per-channel inplace"] 1.081 ms (5%) 3.54 MiB (1%) 27
["closest color", "per-channel new"] 978.699 μs (5%) 3.54 MiB (1%) 27
["error diffusion", "binary inplace"] 2.482 ms (5%) 1.25 MiB (1%) 8
["error diffusion", "binary new"] 2.419 ms (5%) 1.25 MiB (1%) 8
["error diffusion", "color inplace"] 310.252 ms (5%) 6.624 ms 81.64 MiB (1%) 4809563
["error diffusion", "color new"] 303.672 ms (5%) 3.072 ms 76.31 MiB (1%) 4460387
["error diffusion", "per-channel inplace"] 8.425 ms (5%) 5.75 MiB (1%) 33
["error diffusion", "per-channel new"] 8.300 ms (5%) 5.75 MiB (1%) 33
["ordered dithering", "binary inplace"] 274.000 μs (5%) 1.00 MiB (1%) 6
["ordered dithering", "binary new"] 240.300 μs (5%) 1.00 MiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.767 ms (5%) 5.00 MiB (1%) 27
["ordered dithering", "per-channel new"] 1.591 ms (5%) 5.00 MiB (1%) 27
["threshold dithering", "binary inplace"] 204.600 μs (5%) 588.70 KiB (1%) 9
["threshold dithering", "binary new"] 175.499 μs (5%) 588.70 KiB (1%) 9
["threshold dithering", "per-channel inplace"] 1.216 ms (5%) 3.72 MiB (1%) 33
["threshold dithering", "per-channel new"] 1.179 ms (5%) 3.72 MiB (1%) 33

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       3585 s          1 s        180 s       4492 s          0 s
       #2  2294 MHz        845 s          2 s        174 s       7280 s          0 s
       
  Memory: 6.788990020751953 GB (3330.2421875 MB free)
  Uptime: 832.0 sec
  Load Avg:  1.0  0.87  0.48
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 13 Nov 2021 - 12:52
  • Package commit: a7d6ff
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 34.199 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 27.000 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 308.357 ms (5%) 6.328 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 306.897 ms (5%) 6.255 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 964.999 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 930.999 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.067 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.105 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 293.224 ms (5%) 3.378 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 297.830 ms (5%) 3.403 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.158 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.017 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 104.099 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 109.500 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.036 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.025 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 21.800 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 19.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.253 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.152 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       4777 s          1 s        192 s       4679 s          0 s
       #2  2294 MHz       1043 s          2 s        183 s       8464 s          0 s
       
  Memory: 6.788990020751953 GB (3329.65625 MB free)
  Uptime: 972.0 sec
  Load Avg:  1.0  0.92  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.683
BogoMIPS:                        4589.36
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 14, 2021

Let's try to output indices INDEX_BLACK=1 and INDEX_WHITE=2 directly instead of using Boolean values...

src/dither_api.jl Outdated Show resolved Hide resolved
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 14 Nov 2021 - 14:10
    • Baseline: 14 Nov 2021 - 14:12
  • Package commits:
    • Target: 4c8021
    • Baseline: a7d6ff
  • Julia commits:
    • Target: ae8452
    • Baseline: ae8452
  • 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
["closest color", "binary inplace"] 3.62 (5%) ❌ 7.99 (1%) ❌
["closest color", "binary new"] 3.11 (5%) ❌ 7.99 (1%) ❌
["closest color", "per-channel inplace"] 1.42 (5%) ❌ 34.66 (1%) ❌
["closest color", "per-channel new"] 1.39 (5%) ❌ 34.66 (1%) ❌
["error diffusion", "binary inplace"] 2.03 (5%) ❌ 2.40 (1%) ❌
["error diffusion", "binary new"] 1.96 (5%) ❌ 2.40 (1%) ❌
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.60 (1%) ✅
["error diffusion", "color new"] 0.72 (5%) ✅ 0.53 (1%) ✅
["error diffusion", "per-channel inplace"] 1.37 (5%) ❌ 7.73 (1%) ❌
["error diffusion", "per-channel new"] 1.36 (5%) ❌ 7.73 (1%) ❌
["ordered dithering", "binary inplace"] 3.38 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "binary new"] 3.32 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "per-channel inplace"] 2.48 (5%) ❌ 34.07 (1%) ❌
["ordered dithering", "per-channel new"] 2.46 (5%) ❌ 34.07 (1%) ❌
["threshold dithering", "binary inplace"] 455.78 (5%) ❌ 19.95 (1%) ❌
["threshold dithering", "binary new"] 530.45 (5%) ❌ 19.95 (1%) ❌
["threshold dithering", "per-channel inplace"] 28.35 (5%) ❌ 33.29 (1%) ❌
["threshold dithering", "per-channel new"] 28.56 (5%) ❌ 33.29 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       2046 s          1 s        174 s       2941 s          0 s
       #2  2394 MHz       2452 s          1 s        172 s       2561 s          0 s
       
  Memory: 6.788990020751953 GB (3372.80859375 MB free)
  Uptime: 566.0 sec
  Load Avg:  1.0  1.06  0.67
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       2132 s          1 s        180 s       4276 s          0 s
       #2  2394 MHz       3798 s          1 s        183 s       2637 s          0 s
       
  Memory: 6.788990020751953 GB (3319.03125 MB free)
  Uptime: 709.0 sec
  Load Avg:  1.0  1.03  0.73
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 14 Nov 2021 - 14:10
  • Package commit: 4c8021
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 128.501 μs (5%) 512.17 KiB (1%) 3
["closest color", "binary new"] 88.601 μs (5%) 512.17 KiB (1%) 3
["closest color", "color inplace"] 296.666 ms (5%) 6.373 ms 116.50 MiB (1%) 7143427
["closest color", "color new"] 298.119 ms (5%) 6.115 ms 116.48 MiB (1%) 7141939
["closest color", "per-channel inplace"] 1.775 ms (5%) 6.50 MiB (1%) 30
["closest color", "per-channel new"] 1.715 ms (5%) 6.50 MiB (1%) 30
["error diffusion", "binary inplace"] 2.092 ms (5%) 768.36 KiB (1%) 6
["error diffusion", "binary new"] 2.055 ms (5%) 768.36 KiB (1%) 6
["error diffusion", "color inplace"] 208.415 ms (5%) 3.150 ms 45.64 MiB (1%) 2450304
["error diffusion", "color new"] 213.314 ms (5%) 3.078 ms 40.31 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 7.429 ms (5%) 7.25 MiB (1%) 39
["error diffusion", "per-channel new"] 7.348 ms (5%) 7.25 MiB (1%) 39
["ordered dithering", "binary inplace"] 468.701 μs (5%) 513.31 KiB (1%) 4
["ordered dithering", "binary new"] 460.802 μs (5%) 513.31 KiB (1%) 4
["ordered dithering", "per-channel inplace"] 3.393 ms (5%) 6.50 MiB (1%) 33
["ordered dithering", "per-channel new"] 3.331 ms (5%) 6.50 MiB (1%) 33
["threshold dithering", "binary inplace"] 12.124 ms (5%) 2.50 MiB (1%) 131075
["threshold dithering", "binary new"] 11.988 ms (5%) 2.50 MiB (1%) 131075
["threshold dithering", "per-channel inplace"] 40.803 ms (5%) 12.50 MiB (1%) 393246
["threshold dithering", "per-channel new"] 40.360 ms (5%) 12.50 MiB (1%) 393246

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       2046 s          1 s        174 s       2941 s          0 s
       #2  2394 MHz       2452 s          1 s        172 s       2561 s          0 s
       
  Memory: 6.788990020751953 GB (3372.80859375 MB free)
  Uptime: 566.0 sec
  Load Avg:  1.0  1.06  0.67
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 14 Nov 2021 - 14:12
  • Package commit: a7d6ff
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 35.500 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 28.500 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 301.581 ms (5%) 6.464 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 301.657 ms (5%) 6.276 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.254 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.236 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.029 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.046 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 289.615 ms (5%) 6.410 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 296.508 ms (5%) 4.150 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.436 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.417 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 138.700 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 139.000 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.369 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.354 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 26.601 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 22.600 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.439 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.413 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       2132 s          1 s        180 s       4276 s          0 s
       #2  2394 MHz       3798 s          1 s        183 s       2637 s          0 s
       
  Memory: 6.788990020751953 GB (3319.03125 MB free)
  Uptime: 709.0 sec
  Load Avg:  1.0  1.03  0.73
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

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
Address sizes:                   46 bits physical, 48 bits virtual
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:                           63
Model name:                      Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping:                        2
CPU MHz:                         2394.455
BogoMIPS:                        4788.91
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        30 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
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 invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Vendor :Intel
Architecture :Haswell
Model Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 30720) 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

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 14, 2021

Comparing yesterday's (Y) commits with today's (T):

Benchmark comparison
ID time ratio (Y) memory ratio (Y) time ratio (T) memory ratio (T)
["closest color", "binary inplace"] 5.80 (5%) ❌ 8.18 (1%) ❌ 3.62 (5%) ❌ 7.99 (1%) ❌
["closest color", "binary new"] 5.86 (5%) ❌ 8.18 (1%) ❌ 3.11 (5%) ❌ 7.99 (1%) ❌
["closest color", "per-channel inplace"] 1.12 (5%) ❌ 18.86 (1%) ❌ 1.42 (5%) ❌ 34.66 (1%) ❌
["closest color", "per-channel new"] 1.05 (5%) ❌ 18.86 (1%) ❌ 1.39 (5%) ❌ 34.66 (1%) ❌
["error diffusion", "binary inplace"] 2.33 (5%) ❌ 4.00 (1%) ❌ 2.03 (5%) ❌ 2.40 (1%) ❌
["error diffusion", "binary new"] 2.19 (5%) ❌ 4.00 (1%) ❌ 1.96 (5%) ❌ 2.40 (1%) ❌
["error diffusion", "color inplace"] 1.06 (5%) ❌ 1.07 (1%) ❌ 0.72 (5%) ✅ 0.60 (1%) ✅
["error diffusion", "color new"] 0.72 (5%) ✅ 0.53 (1%) ✅
["error diffusion", "per-channel inplace"] 1.63 (5%) ❌ 6.13 (1%) ❌ 1.37 (5%) ❌ 7.73 (1%) ❌
["error diffusion", "per-channel new"] 1.65 (5%) ❌ 6.13 (1%) ❌ 1.36 (5%) ❌ 7.73 (1%) ❌
["ordered dithering", "binary inplace"] 2.63 (5%) ❌ 15.71 (1%) ❌ 3.38 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "binary new"] 2.19 (5%) ❌ 15.71 (1%) ❌ 3.32 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.71 (5%) ❌ 26.21 (1%) ❌ 2.48 (5%) ❌ 34.07 (1%) ❌
["ordered dithering", "per-channel new"] 1.55 (5%) ❌ 26.21 (1%) ❌ 2.46 (5%) ❌ 34.07 (1%) ❌
["threshold dithering", "binary inplace"] 9.39 (5%) ❌ 4.59 (1%) ❌ 455.78 (5%) ❌ 19.95 (1%) ❌
["threshold dithering", "binary new"] 9.05 (5%) ❌ 4.59 (1%) ❌ 530.45 (5%) ❌ 19.95 (1%) ❌
["threshold dithering", "per-channel inplace"] 0.97 (5%) 9.92 (1%) ❌ 28.35 (5%) ❌ 33.29 (1%) ❌
["threshold dithering", "per-channel new"] 1.02 (5%) 9.92 (1%) ❌ 28.56 (5%) ❌ 33.29 (1%) ❌

So per-channel dithering generally got a little slower and

  • error diffusion got faster
  • closest color got faster
  • ordered dithering got slower (but not by much considering we dropped a dependency!) -- I'm sure more performance can be found here
  • threshold dithering got a lot slower -- maybe we can just revert this one

src/closest_color.jl Outdated Show resolved Hide resolved
@JuliaImages JuliaImages deleted a comment from github-actions bot Nov 14, 2021
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 14 Nov 2021 - 15:56
    • Baseline: 14 Nov 2021 - 15:58
  • Package commits:
    • Target: 672d99
    • Baseline: a7d6ff
  • Julia commits:
    • Target: ae8452
    • Baseline: ae8452
  • 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
["closest color", "binary inplace"] 5.34 (5%) ❌ 7.99 (1%) ❌
["closest color", "binary new"] 4.61 (5%) ❌ 7.99 (1%) ❌
["closest color", "color inplace"] 0.76 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.78 (5%) ✅ 0.69 (1%) ✅
["closest color", "per-channel inplace"] 1.31 (5%) ❌ 26.66 (1%) ❌
["closest color", "per-channel new"] 1.28 (5%) ❌ 26.66 (1%) ❌
["error diffusion", "binary inplace"] 1.20 (5%) ❌ 2.40 (1%) ❌
["error diffusion", "binary new"] 1.05 (5%) 2.40 (1%) ❌
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.60 (1%) ✅
["error diffusion", "color new"] 0.71 (5%) ✅ 0.53 (1%) ✅
["error diffusion", "per-channel inplace"] 0.69 (5%) ✅ 6.13 (1%) ❌
["error diffusion", "per-channel new"] 0.72 (5%) ✅ 6.13 (1%) ❌
["ordered dithering", "binary inplace"] 2.57 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "binary new"] 2.33 (5%) ❌ 7.86 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.83 (5%) ❌ 26.21 (1%) ❌
["ordered dithering", "per-channel new"] 1.78 (5%) ❌ 26.21 (1%) ❌
["threshold dithering", "binary inplace"] 5.84 (5%) ❌ 4.49 (1%) ❌
["threshold dithering", "binary new"] 5.06 (5%) ❌ 4.49 (1%) ❌
["threshold dithering", "per-channel inplace"] 0.87 (5%) ✅ 13.82 (1%) ❌
["threshold dithering", "per-channel new"] 0.86 (5%) ✅ 13.82 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz        949 s          2 s        159 s       5592 s          0 s
       #2  2095 MHz       2998 s          1 s        168 s       3547 s          0 s
       
  Memory: 6.788990020751953 GB (3302.8125 MB free)
  Uptime: 676.0 sec
  Load Avg:  1.02  0.89  0.46
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz       2174 s          2 s        171 s       5670 s          0 s
       #2  2095 MHz       3088 s          1 s        174 s       4762 s          0 s
       
  Memory: 6.788990020751953 GB (3283.79296875 MB free)
  Uptime: 807.0 sec
  Load Avg:  1.12  1.0  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 14 Nov 2021 - 15:56
  • Package commit: 672d99
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 82.706 μs (5%) 512.17 KiB (1%) 3
["closest color", "binary new"] 47.003 μs (5%) 512.17 KiB (1%) 3
["closest color", "color inplace"] 179.224 ms (5%) 2.278 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 179.364 ms (5%) 4.244 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.221 ms (5%) 5.00 MiB (1%) 24
["closest color", "per-channel new"] 1.169 ms (5%) 5.00 MiB (1%) 24
["error diffusion", "binary inplace"] 1.026 ms (5%) 768.36 KiB (1%) 6
["error diffusion", "binary new"] 972.064 μs (5%) 768.36 KiB (1%) 6
["error diffusion", "color inplace"] 165.440 ms (5%) 2.352 ms 45.64 MiB (1%) 2450304
["error diffusion", "color new"] 170.994 ms (5%) 2.171 ms 40.31 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 3.274 ms (5%) 5.75 MiB (1%) 33
["error diffusion", "per-channel new"] 3.404 ms (5%) 5.75 MiB (1%) 33
["ordered dithering", "binary inplace"] 265.818 μs (5%) 513.31 KiB (1%) 4
["ordered dithering", "binary new"] 234.515 μs (5%) 513.31 KiB (1%) 4
["ordered dithering", "per-channel inplace"] 1.900 ms (5%) 5.00 MiB (1%) 27
["ordered dithering", "per-channel new"] 1.846 ms (5%) 5.00 MiB (1%) 27
["threshold dithering", "binary inplace"] 95.206 μs (5%) 576.34 KiB (1%) 6
["threshold dithering", "binary new"] 72.404 μs (5%) 576.34 KiB (1%) 6
["threshold dithering", "per-channel inplace"] 953.862 μs (5%) 5.19 MiB (1%) 30
["threshold dithering", "per-channel new"] 925.561 μs (5%) 5.19 MiB (1%) 30

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz        949 s          2 s        159 s       5592 s          0 s
       #2  2095 MHz       2998 s          1 s        168 s       3547 s          0 s
       
  Memory: 6.788990020751953 GB (3302.8125 MB free)
  Uptime: 676.0 sec
  Load Avg:  1.02  0.89  0.46
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 14 Nov 2021 - 15:58
  • Package commit: a7d6ff
  • Julia commit: ae8452
  • 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
["closest color", "binary inplace"] 15.501 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 10.201 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 235.497 ms (5%) 4.323 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 231.225 ms (5%) 4.353 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 929.561 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 911.360 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 856.756 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 926.060 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 230.892 ms (5%) 4.686 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 242.467 ms (5%) 4.908 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 4.748 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.730 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 103.307 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 100.606 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.038 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.036 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 16.301 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 14.300 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.094 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.076 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.3
Commit ae8452a9e0 (2021-09-23 17:34 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1020-azure #21~20.04.1-Ubuntu SMP Mon Oct 11 18:54:28 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2095 MHz       2174 s          2 s        171 s       5670 s          0 s
       #2  2095 MHz       3088 s          1 s        174 s       4762 s          0 s
       
  Memory: 6.788990020751953 GB (3283.79296875 MB free)
  Uptime: 807.0 sec
  Load Avg:  1.12  1.0  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.190
BogoMIPS:                        4190.38
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        2 MiB
L3 cache:                        35.8 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

@adrhill adrhill marked this pull request as ready for review November 14, 2021 16:09
@adrhill
Copy link
Collaborator Author

adrhill commented Nov 14, 2021

I'm happy with color algorithms and error diffusion in general getting faster.
ClosestColor and threshold methods got slower but are still very fast.

I'd be happy to merge this PR, especially if we can find some way to make ordered dithering run faster than before!

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 14, 2021

We could also use something like UInt16 for IndirectArray indices instead of Int as I doubt anyone wants to dither in more than 65535 colors!

Copy link
Member

@johnnychen94 johnnychen94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a confirmation: do we still have the in-place version of dither! and binarydither!?

src/dither_api.jl Outdated Show resolved Hide resolved
src/dither_api.jl Outdated Show resolved Hide resolved
src/error_diffusion.jl Outdated Show resolved Hide resolved
src/error_diffusion.jl Show resolved Hide resolved
@adrhill
Copy link
Collaborator Author

adrhill commented Nov 15, 2021

Just a confirmation: do we still have the in-place version of dither!

Yes, but it calls the regular non-inplace algorithm and simply writes over the image afterwards:

return img .= _dither(eltype(img), img, alg, args...; kwargs...)

If you want to compare the performance, the benchmarks for dither! are called "binary inplace" and "color inplace".

and binarydither!?

No, all binarydither and colordither now return new Matrix{Int} of color indices. binaryditherspecifically returns a new matrix of 1s and 2s.

We could use IndirectArrays for the color algorithms only, however this would be a little hacky when doing per-channel dithering, which calls binarydither but benefits from IndirectArrays.

I also think the package is more transparent for the user if every output is an IndirectArray.

@johnnychen94
Copy link
Member

No, all binarydither and colordither now return new Matrix{Int} of color indices. binaryditherspecifically returns a new matrix of 1s and 2s.
We could use IndirectArrays for the color algorithms only, however this would be a little hacky when doing per-channel dithering, which calls binarydither but benefits from IndirectArrays.
I also think the package is more transparent for the user if every output is an IndirectArray.

Can you explain this a bit more? I’m not sure if I understand it. Do you mean you ideally want to make dither, binarydither and colordither return IndirectArray but it's a bit hacky to do this for binarydither and colordither?

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 15, 2021

Do you mean you ideally want to make dither, binarydither and colordither return IndirectArray but it's a bit hacky to do this for binarydither and colordither?

I should not have used the word hacky, let's take a look at both options:

This PR

In this PR, every call to binarydither and colordither returns a matrix of indices and every call to dither returns an IndirectArray.

Currently DitherPunk does three things:

  1. Binary dithering
  2. Per-channel binary dithering, which results in an image with 8 colors
  3. Color dithering

Working with indices and IndirectArrays...

  • is really efficient for color outputs, which got faster.
  • is slower for binary dithering as we now need to allocate a new array of indices.

Per-channel dithering is in the middle as it uses binarydither on each channel but makes good use of IndirectArrays. Therefore it got less of a slow-down in the benchmarks.


The alternative

The alternative would have been to separate binary and color algorithms:

  • binarydither! could efficiently in-place modify a GenericGrayImage to ones and zeros.
  • colordither could return a newly allocated matrix of color indices 1..ncolors for an IndirectArray.
  • per-channel dithering would require a conversion from GenericImage to IndirectArray.

Copy link
Member

@johnnychen94 johnnychen94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is slower for binary dithering as we now need to allocate a new array of indices.
Per-channel dithering is in the middle as it uses binarydither on each channel but makes good use of IndirectArrays. Therefore it got less of a slow-down in the benchmarks.

Sounds valid argument to me to still use normal Array for binarydither. Maybe we should still provide the in-place version of binarydither so we can reuse the buffer. #47 (comment)

src/closest_color.jl Outdated Show resolved Hide resolved
src/ordered.jl Outdated Show resolved Hide resolved
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Nov 2021 - 19:30
    • Baseline: 21 Nov 2021 - 19:32
  • Package commits:
    • Target: efdbe3
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 1.10 (5%) ❌ 1.00 (1%)
["closest color", "color inplace"] 0.78 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.78 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "binary inplace"] 1.22 (5%) ❌ 1.00 (1%)
["error diffusion", "binary new"] 1.26 (5%) ❌ 1.00 (1%)
["error diffusion", "color inplace"] 1.04 (5%) 1.07 (1%) ❌
["error diffusion", "per-channel inplace"] 0.81 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.81 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 3.03 (5%) ❌ 1.00 (1%)
["ordered dithering", "binary new"] 3.10 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel inplace"] 1.96 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel new"] 1.96 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary new"] 1.25 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2397 MHz       1269 s          1 s        158 s       2953 s          0 s
       #2  2397 MHz       2946 s          2 s        182 s       1270 s          0 s
       
  Memory: 6.788978576660156 GB (3295.28125 MB free)
  Uptime: 444.98 sec
  Load Avg:  1.02  0.94  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2397 MHz       1465 s          1 s        167 s       4151 s          0 s
       #2  2397 MHz       4139 s          2 s        192 s       1474 s          0 s
       
  Memory: 6.788978576660156 GB (3280.1796875 MB free)
  Uptime: 585.8 sec
  Load Avg:  1.0  0.97  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 19:30
  • Package commit: efdbe3
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 36.202 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 28.602 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 239.503 ms (5%) 6.865 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 237.368 ms (5%) 6.976 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.289 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.262 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.284 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.301 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 303.510 ms (5%) 8.101 ms 81.64 MiB (1%) 4809600
["error diffusion", "color new"] 308.235 ms (5%) 8.532 ms 76.31 MiB (1%) 4460424
["error diffusion", "per-channel inplace"] 4.744 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.751 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 450.024 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "binary new"] 442.523 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "per-channel inplace"] 2.703 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 2.674 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 28.002 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 25.101 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.508 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.481 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2397 MHz       1269 s          1 s        158 s       2953 s          0 s
       #2  2397 MHz       2946 s          2 s        182 s       1270 s          0 s
       
  Memory: 6.788978576660156 GB (3295.28125 MB free)
  Uptime: 444.98 sec
  Load Avg:  1.02  0.94  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 19:32
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 32.802 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 28.401 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 307.482 ms (5%) 9.341 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 303.983 ms (5%) 6.804 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.289 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.261 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.051 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.031 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 291.727 ms (5%) 3.892 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 297.187 ms (5%) 3.231 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.878 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.838 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 148.678 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 142.907 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.379 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.366 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 27.902 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 20.101 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.502 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.478 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2397 MHz       1465 s          1 s        167 s       4151 s          0 s
       #2  2397 MHz       4139 s          2 s        192 s       1474 s          0 s
       
  Memory: 6.788978576660156 GB (3280.1796875 MB free)
  Uptime: 585.8 sec
  Load Avg:  1.0  0.97  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

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
Address sizes:                   46 bits physical, 48 bits virtual
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:                           63
Model name:                      Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping:                        2
CPU MHz:                         2397.220
BogoMIPS:                        4794.44
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        30 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
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 invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Vendor :Intel
Architecture :Haswell
Model Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 30720) 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

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Nov 2021 - 20:24
    • Baseline: 21 Nov 2021 - 20:26
  • Package commits:
    • Target: 887d31
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.25 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.27 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.88 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.84 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "binary inplace"] 1.19 (5%) ❌ 1.00 (1%)
["error diffusion", "binary new"] 1.21 (5%) ❌ 1.00 (1%)
["error diffusion", "color inplace"] 0.69 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.72 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.80 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.81 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 2.83 (5%) ❌ 1.00 (1%)
["ordered dithering", "binary new"] 2.95 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel inplace"] 1.87 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel new"] 1.88 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary inplace"] 1.12 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2410 s          2 s        177 s       2592 s          0 s
       #2  2294 MHz       1753 s          1 s        185 s       3287 s          0 s
       
  Memory: 6.788982391357422 GB (2994.140625 MB free)
  Uptime: 529.34 sec
  Load Avg:  1.01  0.94  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2596 s          2 s        186 s       3805 s          0 s
       #2  2294 MHz       2971 s          1 s        196 s       3466 s          0 s
       
  Memory: 6.788982391357422 GB (3017.77734375 MB free)
  Uptime: 670.61 sec
  Load Avg:  1.0  0.96  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 20:24
  • Package commit: 887d31
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 7.900 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 7.350 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 253.119 ms (5%) 10.667 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 248.957 ms (5%) 9.375 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 941.302 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 914.911 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.245 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.251 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 202.523 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 217.070 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 3.745 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 3.694 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 303.205 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "binary new"] 313.300 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "per-channel inplace"] 1.936 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.915 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 25.100 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 19.700 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.130 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.101 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2410 s          2 s        177 s       2592 s          0 s
       #2  2294 MHz       1753 s          1 s        185 s       3287 s          0 s
       
  Memory: 6.788982391357422 GB (2994.140625 MB free)
  Uptime: 529.34 sec
  Load Avg:  1.01  0.94  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 20:26
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 31.100 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 27.075 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 289.088 ms (5%) 6.703 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 297.259 ms (5%) 6.130 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 956.806 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 930.905 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.044 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.032 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 295.152 ms (5%) 7.298 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 301.309 ms (5%) 3.646 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 4.663 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.559 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 107.300 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 106.101 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.035 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.021 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 22.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 20.100 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.125 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.096 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2596 s          2 s        186 s       3805 s          0 s
       #2  2294 MHz       2971 s          1 s        196 s       3466 s          0 s
       
  Memory: 6.788982391357422 GB (3017.77734375 MB free)
  Uptime: 670.61 sec
  Load Avg:  1.0  0.96  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.689
BogoMIPS:                        4589.37
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Nov 2021 - 20:49
    • Baseline: 21 Nov 2021 - 20:51
  • Package commits:
    • Target: 60debc
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.47 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.53 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.83 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.83 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.74 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.79 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.80 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 2.71 (5%) ❌ 1.00 (1%)
["ordered dithering", "binary new"] 2.76 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel inplace"] 1.77 (5%) ❌ 1.00 (1%)
["ordered dithering", "per-channel new"] 1.76 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary inplace"] 1.08 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary new"] 1.10 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz        540 s          1 s        127 s       6139 s          0 s
       #2  2593 MHz       3124 s          1 s        174 s       3547 s          0 s
       
  Memory: 6.788982391357422 GB (3249.7890625 MB free)
  Uptime: 688.19 sec
  Load Avg:  1.11  0.9  0.46
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1714 s          1 s        136 s       6217 s          0 s
       #2  2593 MHz       3210 s          1 s        179 s       4714 s          0 s
       
  Memory: 6.788982391357422 GB (3226.99609375 MB free)
  Uptime: 814.42 sec
  Load Avg:  1.01  0.94  0.53
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 20:49
  • Package commit: 60debc
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 7.400 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 6.383 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 180.717 ms (5%) 80.50 MiB (1%) 4784168
["closest color", "color new"] 183.795 ms (5%) 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.109 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.094 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 915.312 μs (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 913.111 μs (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 153.036 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 159.619 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.386 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.386 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 337.104 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "binary new"] 332.004 μs (5%) 65.30 KiB (1%) 4
["ordered dithering", "per-channel inplace"] 2.197 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 2.178 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 20.701 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 18.000 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.310 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.292 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz        540 s          1 s        127 s       6139 s          0 s
       #2  2593 MHz       3124 s          1 s        174 s       3547 s          0 s
       
  Memory: 6.788982391357422 GB (3249.7890625 MB free)
  Uptime: 688.19 sec
  Load Avg:  1.11  0.9  0.46
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 20:51
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 15.700 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 12.067 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 218.888 ms (5%) 4.165 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 221.003 ms (5%) 4.433 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.113 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.098 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 912.511 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 913.012 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 211.977 ms (5%) 2.242 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 216.119 ms (5%) 2.473 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.521 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.497 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 124.201 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 120.401 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.239 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.238 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 19.200 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 16.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.305 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.288 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1714 s          1 s        136 s       6217 s          0 s
       #2  2593 MHz       3210 s          1 s        179 s       4714 s          0 s
       
  Memory: 6.788982391357422 GB (3226.99609375 MB free)
  Uptime: 814.42 sec
  Load Avg:  1.01  0.94  0.53
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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 8272CL CPU @ 2.60GHz
Stepping:                        7
CPU MHz:                         2593.908
BogoMIPS:                        5187.81
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        2 MiB
L3 cache:                        35.8 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 8272CL CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x07, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability 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

Previously got:
Warning: Assignment to `d` in soft scope is ambiguous because a global variable by the same name exists: `d` will be treated as a new local. Disambiguate by using `local d` to suppress this warning or `global d` to assign to the existing global variable.
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Nov 2021 - 21:43
    • Baseline: 21 Nov 2021 - 21:45
  • Package commits:
    • Target: f22469
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.31 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.27 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.85 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.82 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "color inplace"] 0.71 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.73 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.83 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.84 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 1.11 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "binary new"] 1.02 (5%) 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.07 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 1.10 (5%) ❌ 1.07 (1%) ❌
["threshold dithering", "binary new"] 1.07 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        850 s          2 s        166 s       3553 s          0 s
       #2  2294 MHz       3514 s          1 s        206 s        862 s          0 s
       
  Memory: 6.788982391357422 GB (3197.08203125 MB free)
  Uptime: 464.37 sec
  Load Avg:  1.02  0.95  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        941 s          2 s        171 s       4916 s          0 s
       #2  2294 MHz       4886 s          1 s        220 s        941 s          0 s
       
  Memory: 6.788982391357422 GB (3269.12890625 MB free)
  Uptime: 610.95 sec
  Load Avg:  1.0  0.97  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 21:43
  • Package commit: f22469
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 12.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 8.500 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 245.503 ms (5%) 10.538 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 242.454 ms (5%) 10.133 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.287 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.265 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.183 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.181 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 198.861 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 208.437 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 5.076 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.109 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 142.501 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 133.601 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.512 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.480 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 29.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 27.700 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.546 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.494 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        850 s          2 s        166 s       3553 s          0 s
       #2  2294 MHz       3514 s          1 s        206 s        862 s          0 s
       
  Memory: 6.788982391357422 GB (3197.08203125 MB free)
  Uptime: 464.37 sec
  Load Avg:  1.02  0.95  0.5
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 21:45
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 39.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 31.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 290.088 ms (5%) 5.997 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 297.058 ms (5%) 6.549 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.300 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.276 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.197 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.159 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 280.706 ms (5%) 3.312 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 286.574 ms (5%) 3.313 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 6.139 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 6.052 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 128.799 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 131.300 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.412 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.346 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 29.700 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 26.000 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.542 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.513 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        941 s          2 s        171 s       4916 s          0 s
       #2  2294 MHz       4886 s          1 s        220 s        941 s          0 s
       
  Memory: 6.788982391357422 GB (3269.12890625 MB free)
  Uptime: 610.95 sec
  Load Avg:  1.0  0.97  0.58
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.689
BogoMIPS:                        4589.37
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

src/ordered.jl Outdated Show resolved Hide resolved
@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 21 Nov 2021 - 21:45
    • Baseline: 21 Nov 2021 - 21:47
  • Package commits:
    • Target: b66c9e
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.45 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.50 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.82 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.83 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "binary inplace"] 0.89 (5%) ✅ 1.00 (1%)
["error diffusion", "binary new"] 0.89 (5%) ✅ 1.00 (1%)
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.74 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.85 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.85 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 0.95 (5%) ✅ 1.07 (1%) ❌
["ordered dithering", "binary new"] 0.93 (5%) ✅ 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.00 (5%) 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 0.99 (5%) 1.07 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1702 s          1 s        148 s       3345 s          0 s
       #2  2593 MHz       1860 s          1 s        158 s       3188 s          0 s
       
  Memory: 6.788978576660156 GB (3073.69921875 MB free)
  Uptime: 525.82 sec
  Load Avg:  1.01  0.87  0.45
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1782 s          1 s        154 s       4507 s          0 s
       #2  2593 MHz       3029 s          1 s        168 s       3261 s          0 s
       
  Memory: 6.788978576660156 GB (3242.7265625 MB free)
  Uptime: 651.08 sec
  Load Avg:  0.99  0.91  0.52
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 21:45
  • Package commit: b66c9e
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 7.500 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 5.867 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 180.873 ms (5%) 80.50 MiB (1%) 4784168
["closest color", "color new"] 182.056 ms (5%) 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.111 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.097 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 909.811 μs (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 906.512 μs (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 152.823 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 159.090 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.332 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.332 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 115.501 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 109.901 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.233 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.215 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 20.500 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 17.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.339 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.321 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1702 s          1 s        148 s       3345 s          0 s
       #2  2593 MHz       1860 s          1 s        158 s       3188 s          0 s
       
  Memory: 6.788978576660156 GB (3073.69921875 MB free)
  Uptime: 525.82 sec
  Load Avg:  1.01  0.87  0.45
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, skylake-avx512)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 21 Nov 2021 - 21:47
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 16.567 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 11.850 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 219.656 ms (5%) 4.070 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 220.058 ms (5%) 3.881 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.113 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.098 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.017 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.018 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 212.502 ms (5%) 2.141 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 215.820 ms (5%) 2.097 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.099 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.082 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 122.101 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 118.400 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.238 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.233 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 20.100 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 17.600 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.304 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.288 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: 
              speed         user         nice          sys         idle          irq
       #1  2593 MHz       1782 s          1 s        154 s       4507 s          0 s
       #2  2593 MHz       3029 s          1 s        168 s       3261 s          0 s
       
  Memory: 6.788978576660156 GB (3242.7265625 MB free)
  Uptime: 651.08 sec
  Load Avg:  0.99  0.91  0.52
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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 8272CL CPU @ 2.60GHz
Stepping:                        7
CPU MHz:                         2593.906
BogoMIPS:                        5187.81
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        2 MiB
L3 cache:                        35.8 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 8272CL CPU @ 2.60GHz
Vendor :Intel
Architecture :Skylake
Model Family: 0x06, Model: 0x55, Stepping: 0x07, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability 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

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 21, 2021

@johnnychen94 IndirectArrays are now only used when dithering in a color palette.

I reverted binary dithering and per-channel dithering to use in-place updates.
To obtain an IndirectArray from those, it is enough to call

dither(img, FloydSteinberg()) |> IndirectArray

Ordered dithering appears to be around the same speed as previously while dropping the TiledIteration dependency.

I'm not sure how to resolve the Julia 1.0 dependency conflict.

@johnnychen94
Copy link
Member

I'm not sure how to resolve the Julia 1.0 dependency conflict.

I guess we need to update the hot-fix in CI setup

Pkg.add([
PackageSpec(name="Images", version="0.23"),
PackageSpec(name="ImageCore", version="0.8"),
])
with something like this (I didn't run it)

          Pkg.add([
            PackageSpec(name="Images", version="0.24"),
            PackageSpec(name="IndirectArrays", version="0.5"),
            PackageSpec(name="ImageCore", version="0.8"),
          ])

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Nov 2021 - 21:19
    • Baseline: 23 Nov 2021 - 21:21
  • Package commits:
    • Target: 6a9a35
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.30 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.29 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.84 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.82 (5%) ✅ 0.69 (1%) ✅
["closest color", "per-channel new"] 0.91 (5%) ✅ 1.00 (1%)
["error diffusion", "color inplace"] 0.70 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.78 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.82 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.84 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 0.97 (5%) 1.07 (1%) ❌
["ordered dithering", "binary new"] 0.96 (5%) 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.08 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 1.06 (5%) ❌ 1.07 (1%) ❌
["threshold dithering", "binary inplace"] 1.14 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary new"] 1.20 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3234 s          1 s        184 s        547 s          0 s
       #2  2394 MHz        825 s          1 s        145 s       3011 s          0 s
       
  Memory: 6.788982391357422 GB (3412.3984375 MB free)
  Uptime: 402.61 sec
  Load Avg:  1.01  0.92  0.48
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3417 s          1 s        194 s       1741 s          0 s
       #2  2394 MHz       2034 s          1 s        154 s       3183 s          0 s
       
  Memory: 6.788982391357422 GB (3467.3671875 MB free)
  Uptime: 541.75 sec
  Load Avg:  1.02  0.97  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:19
  • Package commit: 6a9a35
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 10.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 7.733 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 245.610 ms (5%) 12.062 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 244.941 ms (5%) 12.775 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.161 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.080 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.030 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.027 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 201.264 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 220.120 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.661 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.714 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 126.402 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 118.802 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.393 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.362 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 25.400 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 23.000 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.397 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.377 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3234 s          1 s        184 s        547 s          0 s
       #2  2394 MHz        825 s          1 s        145 s       3011 s          0 s
       
  Memory: 6.788982391357422 GB (3412.3984375 MB free)
  Uptime: 402.61 sec
  Load Avg:  1.01  0.92  0.48
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:21
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 33.700 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 26.567 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 293.150 ms (5%) 6.062 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 298.122 ms (5%) 6.219 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.188 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.182 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.018 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.012 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 287.234 ms (5%) 2.977 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 283.193 ms (5%) 3.008 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.659 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.618 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 130.802 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 123.402 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.293 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.280 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 22.200 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 19.200 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.397 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.356 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3417 s          1 s        194 s       1741 s          0 s
       #2  2394 MHz       2034 s          1 s        154 s       3183 s          0 s
       
  Memory: 6.788982391357422 GB (3467.3671875 MB free)
  Uptime: 541.75 sec
  Load Avg:  1.02  0.97  0.56
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

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
Address sizes:                   46 bits physical, 48 bits virtual
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:                           63
Model name:                      Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping:                        2
CPU MHz:                         2394.455
BogoMIPS:                        4788.91
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        30 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
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 invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Vendor :Intel
Architecture :Haswell
Model Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 30720) 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

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Nov 2021 - 21:20
    • Baseline: 23 Nov 2021 - 21:23
  • Package commits:
    • Target: 063542
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.32 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.27 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.83 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.83 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.73 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.85 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.83 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 0.98 (5%) 1.07 (1%) ❌
["ordered dithering", "binary new"] 0.96 (5%) 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.09 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 1.08 (5%) ❌ 1.07 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3314 s          1 s        188 s        671 s          0 s
       #2  2394 MHz        735 s          1 s        151 s       3296 s          0 s
       
  Memory: 6.788982391357422 GB (3485.01171875 MB free)
  Uptime: 423.48 sec
  Load Avg:  1.01  0.97  0.53
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       4583 s          1 s        201 s        785 s          0 s
       #2  2394 MHz        859 s          1 s        157 s       4559 s          0 s
       
  Memory: 6.788982391357422 GB (3411.82421875 MB free)
  Uptime: 563.3 sec
  Load Avg:  1.0  0.99  0.6
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:20
  • Package commit: 063542
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 10.300 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 7.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 247.677 ms (5%) 13.932 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 244.901 ms (5%) 11.251 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.087 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.063 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 997.806 μs (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.026 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 203.922 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 211.794 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.427 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.420 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 126.601 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 119.301 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.309 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.287 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 25.601 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 23.200 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.315 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.291 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       3314 s          1 s        188 s        671 s          0 s
       #2  2394 MHz        735 s          1 s        151 s       3296 s          0 s
       
  Memory: 6.788982391357422 GB (3485.01171875 MB free)
  Uptime: 423.48 sec
  Load Avg:  1.01  0.97  0.53
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:23
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 32.400 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 26.660 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 298.534 ms (5%) 9.098 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 295.480 ms (5%) 6.153 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.125 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.101 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 987.406 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 982.405 μs (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 283.422 ms (5%) 6.193 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 289.198 ms (5%) 3.342 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 5.235 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 5.323 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 128.600 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 124.800 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.205 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.193 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 25.700 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 22.701 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.315 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.292 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz: 
              speed         user         nice          sys         idle          irq
       #1  2394 MHz       4583 s          1 s        201 s        785 s          0 s
       #2  2394 MHz        859 s          1 s        157 s       4559 s          0 s
       
  Memory: 6.788982391357422 GB (3411.82421875 MB free)
  Uptime: 563.3 sec
  Load Avg:  1.0  0.99  0.6
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, haswell)

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
Address sizes:                   46 bits physical, 48 bits virtual
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:                           63
Model name:                      Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping:                        2
CPU MHz:                         2394.454
BogoMIPS:                        4788.90
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        30 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Not affected
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 invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property Value
Brand Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Vendor :Intel
Architecture :Haswell
Model Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00
Cores 2 physical cores, 2 logical cores (on executing CPU)
No Hyperthreading hardware capability detected
Clock Frequencies Not supported by CPU
Data Cache Level 1:3 : (32, 256, 30720) 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

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Nov 2021 - 21:23
    • Baseline: 23 Nov 2021 - 21:26
  • Package commits:
    • Target: 84c696
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.32 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.29 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.83 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.84 (5%) ✅ 0.69 (1%) ✅
["closest color", "per-channel inplace"] 1.07 (5%) ❌ 1.00 (1%)
["error diffusion", "color inplace"] 0.72 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.75 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.81 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.79 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 1.08 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "binary new"] 1.02 (5%) 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 0.91 (5%) ✅ 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 0.93 (5%) ✅ 1.07 (1%) ❌

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        786 s          2 s        137 s       3332 s          0 s
       #2  2294 MHz       3413 s          1 s        212 s        644 s          0 s
       
  Memory: 6.788982391357422 GB (3430.921875 MB free)
  Uptime: 434.09 sec
  Load Avg:  1.04  0.97  0.52
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        923 s          2 s        144 s       4617 s          0 s
       #2  2294 MHz       4706 s          1 s        225 s        769 s          0 s
       
  Memory: 6.788982391357422 GB (3402.0859375 MB free)
  Uptime: 577.51 sec
  Load Avg:  1.04  1.0  0.6
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:23
  • Package commit: 84c696
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 12.801 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 9.000 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 244.176 ms (5%) 10.604 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 246.475 ms (5%) 10.314 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 1.268 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.256 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.179 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.174 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 205.083 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 211.939 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.915 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.761 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 140.002 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 133.201 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.208 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.178 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 29.900 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 26.300 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.440 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.463 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        786 s          2 s        137 s       3332 s          0 s
       #2  2294 MHz       3413 s          1 s        212 s        644 s          0 s
       
  Memory: 6.788982391357422 GB (3430.921875 MB free)
  Uptime: 434.09 sec
  Load Avg:  1.04  0.97  0.52
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:26
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 40.200 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 31.400 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 295.139 ms (5%) 6.484 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 294.932 ms (5%) 6.670 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 1.187 ms (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 1.198 ms (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.179 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.167 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 286.060 ms (5%) 3.301 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 284.371 ms (5%) 3.294 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 6.096 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 6.038 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 129.501 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 130.100 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.326 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.267 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 29.800 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 26.200 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.456 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.408 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz        923 s          2 s        144 s       4617 s          0 s
       #2  2294 MHz       4706 s          1 s        225 s        769 s          0 s
       
  Memory: 6.788982391357422 GB (3402.0859375 MB free)
  Uptime: 577.51 sec
  Load Avg:  1.04  1.0  0.6
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.687
BogoMIPS:                        4589.37
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

@adrhill adrhill removed the run benchmark Run benchmark CI action label Nov 23, 2021
@adrhill
Copy link
Collaborator Author

adrhill commented Nov 23, 2021

Sorry for the spam, I forgot this was re-running the benchmarks in here... 😬

@github-actions
Copy link
Contributor

Benchmark result

Judge result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmarks:
    • Target: 23 Nov 2021 - 21:59
    • Baseline: 23 Nov 2021 - 22:01
  • Package commits:
    • Target: 6d7d45
    • Baseline: a7d6ff
  • Julia commits:
    • Target: 35f0c9
    • Baseline: 35f0c9
  • 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
["closest color", "binary inplace"] 0.29 (5%) ✅ 1.00 (1%)
["closest color", "binary new"] 0.17 (5%) ✅ 1.00 (1%)
["closest color", "color inplace"] 0.84 (5%) ✅ 0.69 (1%) ✅
["closest color", "color new"] 0.85 (5%) ✅ 0.69 (1%) ✅
["error diffusion", "color inplace"] 0.76 (5%) ✅ 0.59 (1%) ✅
["error diffusion", "color new"] 0.72 (5%) ✅ 0.52 (1%) ✅
["error diffusion", "per-channel inplace"] 0.87 (5%) ✅ 1.00 (1%)
["error diffusion", "per-channel new"] 0.90 (5%) ✅ 1.00 (1%)
["ordered dithering", "binary inplace"] 0.90 (5%) ✅ 1.07 (1%) ❌
["ordered dithering", "binary new"] 0.84 (5%) ✅ 1.07 (1%) ❌
["ordered dithering", "per-channel inplace"] 1.06 (5%) ❌ 1.07 (1%) ❌
["ordered dithering", "per-channel new"] 1.01 (5%) 1.07 (1%) ❌
["threshold dithering", "binary inplace"] 1.30 (5%) ❌ 1.00 (1%)
["threshold dithering", "binary new"] 1.42 (5%) ❌ 1.00 (1%)
["threshold dithering", "per-channel inplace"] 1.06 (5%) ❌ 1.00 (1%)

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Target

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2179 s          2 s        184 s       1666 s          0 s
       #2  2294 MHz       1813 s          1 s        168 s       2051 s          0 s
       
  Memory: 6.788982391357422 GB (3442.875 MB free)
  Uptime: 408.36 sec
  Load Avg:  1.07  0.89  0.45
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2359 s          2 s        194 s       2863 s          0 s
       #2  2294 MHz       3019 s          1 s        178 s       2225 s          0 s
       
  Memory: 6.788982391357422 GB (3398.53515625 MB free)
  Uptime: 547.42 sec
  Load Avg:  1.0  0.93  0.54
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Target result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 21:59
  • Package commit: 6d7d45
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 9.933 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 4.500 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 254.294 ms (5%) 10.342 ms 80.50 MiB (1%) 4784168
["closest color", "color new"] 253.435 ms (5%) 10.131 ms 80.48 MiB (1%) 4782680
["closest color", "per-channel inplace"] 996.709 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 974.107 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.051 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "binary new"] 1.078 ms (5%) 320.38 KiB (1%) 6
["error diffusion", "color inplace"] 210.976 ms (5%) 45.20 MiB (1%) 2450304
["error diffusion", "color new"] 214.763 ms (5%) 39.87 MiB (1%) 2101128
["error diffusion", "per-channel inplace"] 4.241 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.301 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 105.701 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "binary new"] 98.100 μs (5%) 69.55 KiB (1%) 6
["ordered dithering", "per-channel inplace"] 1.098 ms (5%) 208.25 KiB (1%) 11
["ordered dithering", "per-channel new"] 1.071 ms (5%) 208.25 KiB (1%) 11
["threshold dithering", "binary inplace"] 25.600 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 23.600 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.191 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.130 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2179 s          2 s        184 s       1666 s          0 s
       #2  2294 MHz       1813 s          1 s        168 s       2051 s          0 s
       
  Memory: 6.788982391357422 GB (3442.875 MB free)
  Uptime: 408.36 sec
  Load Avg:  1.07  0.89  0.45
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.0.1 (ORCJIT, broadwell)

Baseline result

Benchmark Report for /home/runner/work/DitherPunk.jl/DitherPunk.jl

Job Properties

  • Time of benchmark: 23 Nov 2021 - 22:1
  • Package commit: a7d6ff
  • Julia commit: 35f0c9
  • 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
["closest color", "binary inplace"] 34.267 μs (5%) 64.14 KiB (1%) 2
["closest color", "binary new"] 27.100 μs (5%) 64.14 KiB (1%) 2
["closest color", "color inplace"] 302.221 ms (5%) 6.473 ms 116.91 MiB (1%) 7141940
["closest color", "color new"] 297.492 ms (5%) 5.833 ms 116.91 MiB (1%) 7141940
["closest color", "per-channel inplace"] 957.007 μs (5%) 192.08 KiB (1%) 2
["closest color", "per-channel new"] 931.207 μs (5%) 192.08 KiB (1%) 2
["error diffusion", "binary inplace"] 1.060 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "binary new"] 1.043 ms (5%) 320.33 KiB (1%) 5
["error diffusion", "color inplace"] 276.016 ms (5%) 6.148 ms 76.00 MiB (1%) 4460386
["error diffusion", "color new"] 297.048 ms (5%) 6.612 ms 76.00 MiB (1%) 4460386
["error diffusion", "per-channel inplace"] 4.851 ms (5%) 960.64 KiB (1%) 11
["error diffusion", "per-channel new"] 4.781 ms (5%) 960.64 KiB (1%) 11
["ordered dithering", "binary inplace"] 117.701 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "binary new"] 116.600 μs (5%) 65.28 KiB (1%) 3
["ordered dithering", "per-channel inplace"] 1.033 ms (5%) 195.50 KiB (1%) 5
["ordered dithering", "per-channel new"] 1.058 ms (5%) 195.50 KiB (1%) 5
["threshold dithering", "binary inplace"] 19.700 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "binary new"] 16.600 μs (5%) 128.31 KiB (1%) 5
["threshold dithering", "per-channel inplace"] 1.126 ms (5%) 384.50 KiB (1%) 8
["threshold dithering", "per-channel new"] 1.097 ms (5%) 384.50 KiB (1%) 8

Benchmark Group List

Here's a list of all the benchmark groups executed by this job:

  • ["closest color"]
  • ["error diffusion"]
  • ["ordered dithering"]
  • ["threshold dithering"]

Julia versioninfo

Julia Version 1.6.4
Commit 35f0c911f4 (2021-11-19 03:54 UTC)
Platform Info:
  OS: Linux (x86_64-pc-linux-gnu)
      Ubuntu 20.04.3 LTS
  uname: Linux 5.11.0-1021-azure #22~20.04.1-Ubuntu SMP Fri Oct 29 01:11:25 UTC 2021 x86_64 x86_64
  CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: 
              speed         user         nice          sys         idle          irq
       #1  2294 MHz       2359 s          2 s        194 s       2863 s          0 s
       #2  2294 MHz       3019 s          1 s        178 s       2225 s          0 s
       
  Memory: 6.788982391357422 GB (3398.53515625 MB free)
  Uptime: 547.42 sec
  Load Avg:  1.0  0.93  0.54
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-11.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
Address sizes:                   46 bits physical, 48 bits virtual
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.688
BogoMIPS:                        4589.37
Hypervisor vendor:               Microsoft
Virtualization type:             full
L1d cache:                       64 KiB
L1i cache:                       64 KiB
L2 cache:                        512 KiB
L3 cache:                        50 MiB
NUMA node0 CPU(s):               0,1
Vulnerability Itlb multihit:     KVM: Mitigation: VMX unsupported
Vulnerability L1tf:              Mitigation; PTE Inversion
Vulnerability Mds:               Mitigation; Clear CPU buffers; SMT Host state unknown
Vulnerability Meltdown:          Mitigation; PTI
Vulnerability Spec store bypass: Vulnerable
Vulnerability Spectre v1:        Mitigation; usercopy/swapgs barriers and __user pointer sanitization
Vulnerability Spectre v2:        Mitigation; Full generic retpoline, STIBP disabled, RSB filling
Vulnerability Srbds:             Not affected
Vulnerability Tsx async abort:   Mitigation; Clear CPU buffers; SMT Host state unknown
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 hardware capability 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

Copy link
Member

@johnnychen94 johnnychen94 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks great! Merge when you're ready.

@adrhill
Copy link
Collaborator Author

adrhill commented Nov 25, 2021

Thanks for the help! 😊

@adrhill adrhill merged commit f2f4d43 into master Nov 25, 2021
@adrhill adrhill deleted the ah/indirect branch November 25, 2021 18:59
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.

store the color result using IndirectArrays
2 participants