JuliaImages / DitherPunk.jl

Dithering algorithms in Julia.
MIT License
60 stars 3 forks source link

Error diffusion in XYZ color space #63

Closed adrhill closed 2 years ago

adrhill commented 2 years ago

Closes #59

codecov[bot] commented 2 years ago

Codecov Report

Merging #63 (0bac976) into master (21996b9) will increase coverage by 0.46%. The diff coverage is 100.00%.

Impacted file tree graph

@@            Coverage Diff             @@
##           master      #63      +/-   ##
==========================================
+ Coverage   96.81%   97.27%   +0.46%     
==========================================
  Files          14       14              
  Lines         251      257       +6     
==========================================
+ Hits          243      250       +7     
+ Misses          8        7       -1     
Impacted Files Coverage Δ
src/error_diffusion.jl 100.00% <100.00%> (ø)
src/utils.jl 92.30% <100.00%> (+20.87%) :arrow_up:

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 21996b9...0bac976. Read the comment docs.

github-actions[bot] commented 2 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmarks: - Target: 11 Dec 2021 - 20:36 - Baseline: 11 Dec 2021 - 20:38 * Package commits: - Target: 3d1c93 - Baseline: 21996b * Julia commits: - Target: 3bf9d1 - Baseline: 3bf9d1 * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |--------------------------------------------------|------------------------------|------------------------------| | `["closest color", "binary inplace"]` | 1.19 (5%) :x: | 1.00 (1%) | | `["closest color", "binary new"]` | 1.74 (5%) :x: | 1.00 (1%) | | `["closest color", "color inplace"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["closest color", "color new"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["closest color", "per-channel inplace"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["error diffusion", "binary inplace"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["error diffusion", "binary new"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["error diffusion", "color inplace"]` | 1.06 (5%) :x: | 1.05 (1%) :x: | | `["error diffusion", "color new"]` | 0.82 (5%) :white_check_mark: | 0.50 (1%) :white_check_mark: | | `["error diffusion", "per-channel inplace"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["error diffusion", "per-channel new"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color inplace"]` | 1.25 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color new"]` | 1.22 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "per-channel inplace"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "per-channel new"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary inplace"]` | 1.74 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary new"]` | 1.62 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "per-channel inplace"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "per-channel new"]` | 1.06 (5%) :x: | 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 3262 s 2 s 177 s 1925 s 0 s #2 2294 MHz 951 s 1 s 142 s 4276 s 0 s Memory: 6.788982391357422 GB (3379.9765625 MB free) Uptime: 542.38 sec Load Avg: 1.0 0.95 0.52 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, broadwell) ``` ### Baseline ``` Julia Version 1.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 4563 s 2 s 188 s 2020 s 0 s #2 2294 MHz 1052 s 1 s 147 s 5574 s 0 s Memory: 6.788982391357422 GB (3520.25390625 MB free) Uptime: 683.12 sec Load Avg: 1.35 1.11 0.65 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, broadwell) ``` --- # Target result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 11 Dec 2021 - 20:36 * Package commit: 3d1c93 * Julia commit: 3bf9d1 * 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.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 6.967 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 186.877 ms (5%) | | 36.50 MiB (1%) | 2359336 | | `["closest color", "color new"]` | 193.137 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 979.506 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 954.207 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 1.116 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 1.109 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 186.587 ms (5%) | | 33.44 MiB (1%) | 2138132 | | `["error diffusion", "color new"]` | 148.965 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 4.009 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.061 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 105.301 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 97.900 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 921.536 ms (5%) | 38.563 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 1.100 s (5%) | 53.494 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.155 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.131 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 19.300 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 14.600 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.026 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 984.007 μs (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 3262 s 2 s 177 s 1925 s 0 s #2 2294 MHz 951 s 1 s 142 s 4276 s 0 s Memory: 6.788982391357422 GB (3379.9765625 MB free) Uptime: 542.38 sec Load Avg: 1.0 0.95 0.52 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, broadwell) ``` --- # Baseline result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 11 Dec 2021 - 20:38 * Package commit: 21996b * Julia commit: 3bf9d1 * 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"]` | 6.300 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 4.000 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 167.629 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 170.929 ms (5%) | 2.698 ms | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 929.707 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 914.307 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 995.406 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 988.006 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 176.400 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 182.666 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 3.795 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 3.767 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 101.600 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 97.700 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 735.558 ms (5%) | 15.607 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 903.025 ms (5%) | 19.595 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.094 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.071 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 11.100 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 9.000 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 957.407 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 932.206 μs (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 4563 s 2 s 188 s 2020 s 0 s #2 2294 MHz 1052 s 1 s 147 s 5574 s 0 s Memory: 6.788982391357422 GB (3520.25390625 MB free) Uptime: 683.12 sec Load Avg: 1.35 1.11 0.65 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.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.686 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 commented 2 years ago
Comparison to master: Color scheme master original this PR
:flag_us FloydSteinberg_flag_us FloydSteinberg_flag_us
:PuOr_6 FloydSteinberg_PuOr_6 FloydSteinberg_PuOr_6
:websafe FloydSteinberg_websafe FloydSteinberg_websafe
:RdBu_10 FloydSteinberg_RdBu_10 FloydSteinberg_RdBu_10
:jet FloydSteinberg_jet FloydSteinberg_jet
:rainbow FloydSteinberg_rainbow FloydSteinberg_rainbow
:flag_it FloydSteinberg_flag_it FloydSteinberg_flag_it
adrhill commented 2 years ago

Rerunning bechmarks.

adrhill commented 2 years ago

I'm not too sure what to make of the comparison. To me, XYZ looks "more colorful", maybe that's due to higher contrast.

github-actions[bot] commented 2 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmarks: - Target: 11 Dec 2021 - 21:05 - Baseline: 11 Dec 2021 - 21:07 * Package commits: - Target: 3d1c93 - Baseline: 21996b * Julia commits: - Target: 3bf9d1 - Baseline: 3bf9d1 * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |--------------------------------------------------|------------------------------|------------------------------| | `["closest color", "binary inplace"]` | 1.47 (5%) :x: | 1.00 (1%) | | `["closest color", "binary new"]` | 1.39 (5%) :x: | 1.00 (1%) | | `["closest color", "color inplace"]` | 1.19 (5%) :x: | 1.00 (1%) | | `["closest color", "color new"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["closest color", "per-channel inplace"]` | 1.23 (5%) :x: | 1.00 (1%) | | `["closest color", "per-channel new"]` | 1.23 (5%) :x: | 1.00 (1%) | | `["error diffusion", "binary inplace"]` | 1.17 (5%) :x: | 1.00 (1%) | | `["error diffusion", "binary new"]` | 1.17 (5%) :x: | 1.00 (1%) | | `["error diffusion", "color inplace"]` | 1.05 (5%) :x: | 1.05 (1%) :x: | | `["error diffusion", "color new"]` | 0.83 (5%) :white_check_mark: | 0.50 (1%) :white_check_mark: | | `["error diffusion", "per-channel inplace"]` | 1.17 (5%) :x: | 1.00 (1%) | | `["error diffusion", "per-channel new"]` | 1.23 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "binary inplace"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "binary new"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color inplace"]` | 1.27 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color new"]` | 1.25 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "per-channel inplace"]` | 1.23 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "per-channel new"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary inplace"]` | 1.59 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary new"]` | 1.36 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "per-channel inplace"]` | 1.20 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "per-channel new"]` | 1.20 (5%) :x: | 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 3261 s 1 s 186 s 2070 s 0 s #2 2593 MHz 530 s 1 s 129 s 5208 s 0 s Memory: 6.788978576660156 GB (3291.390625 MB free) Uptime: 709.6 sec Load Avg: 1.07 1.06 0.7 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` ### Baseline ``` Julia Version 1.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 4489 s 1 s 197 s 2146 s 0 s #2 2593 MHz 610 s 1 s 134 s 6433 s 0 s Memory: 6.788978576660156 GB (3389.640625 MB free) Uptime: 841.09 sec Load Avg: 1.0 1.04 0.75 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Target result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 11 Dec 2021 - 21:5 * Package commit: 3d1c93 * Julia commit: 3bf9d1 * 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.525 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 5.433 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 151.482 ms (5%) | | 36.50 MiB (1%) | 2359336 | | `["closest color", "color new"]` | 147.071 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 1.111 ms (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 1.096 ms (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 1.080 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 1.076 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 142.531 ms (5%) | | 33.44 MiB (1%) | 2138132 | | `["error diffusion", "color new"]` | 115.596 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 4.343 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.349 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 114.801 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 109.801 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 716.305 ms (5%) | 33.040 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 836.531 ms (5%) | 32.545 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.230 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.214 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 14.601 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 12.501 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.134 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 1.117 ms (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 3261 s 1 s 186 s 2070 s 0 s #2 2593 MHz 530 s 1 s 129 s 5208 s 0 s Memory: 6.788978576660156 GB (3291.390625 MB free) Uptime: 709.6 sec Load Avg: 1.07 1.06 0.7 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Baseline result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 11 Dec 2021 - 21:7 * Package commit: 21996b * Julia commit: 3bf9d1 * 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"]` | 5.125 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 3.917 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 127.555 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 129.976 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 904.412 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 887.914 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 923.811 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 919.010 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 135.417 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 139.502 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 3.698 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 3.541 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 101.601 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 96.801 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 563.799 ms (5%) | 10.146 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 671.027 ms (5%) | 13.915 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.003 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.071 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 9.200 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 9.201 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 947.811 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 933.311 μs (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 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 4489 s 1 s 197 s 2146 s 0 s #2 2593 MHz 610 s 1 s 134 s 6433 s 0 s Memory: 6.788978576660156 GB (3389.640625 MB free) Uptime: 841.09 sec Load Avg: 1.0 1.04 0.75 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.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.907 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 commented 2 years ago

Not sure what's going on with the benchmarks. At least the relevant one is faster.

adrhill commented 2 years ago

@johnnychen94 any opinion on how to proceed with this one?

johnnychen94 commented 2 years ago

I'm not too sure what to make of the comparison. To me, XYZ looks "more colorful", maybe that's due to higher contrast. Agree on this.

About the performance, we might need to figure out why it's slower for other unrelated cases. Let me run a local benchmark and see if it's more stable.

johnnychen94 commented 2 years ago

Seems to be a benchmark noise introduced by GitHub Action (which is why we need an exclusive benchmark machine...)

This PR # Benchmark Report for *C:\Users\jc\Documents\julia\DitherPunk.jl* ## Job Properties * Time of benchmark: 12 Dec 2021 - 13:26 * Package commit: 67bd20 * Julia commit: 3bf9d1 * 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"]` | 3.671 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 2.087 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 66.371 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 68.279 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 598.800 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 599.700 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 428.200 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 424.800 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 57.132 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "color new"]` | 54.063 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 1.852 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 1.859 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 45.600 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 42.800 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 277.281 ms (5%) | 5.092 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 331.585 ms (5%) | 6.871 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 633.200 μs (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 622.600 μs (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 6.600 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 5.467 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 610.000 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 599.800 μs (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 UTC) Platform Info: OS: Windows (x86_64-w64-mingw32) Microsoft Windows [Version 10.0.22000.318] CPU: 12th Gen Intel(R) Core(TM) i9-12900K: speed user nice sys idle irq #1-24 3187 MHz 44330398 0 30136505 3005002960 2263816 ticks Memory: 31.79674530029297 GB (18474.96484375 MB free) Uptime: 128311.0 sec Load Avg: 0.0 0.0 0.0 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, goldmont) ```
master # Benchmark Report for *C:\Users\jc\Documents\julia\DitherPunk.jl* ## Job Properties * Time of benchmark: 12 Dec 2021 - 13:30 * Package commit: 2915ec * Julia commit: 3bf9d1 * 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"]` | 3.457 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 1.988 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 66.059 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 67.604 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 598.000 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 600.300 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 423.700 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 424.900 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 68.161 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 74.660 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 1.860 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 1.847 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 45.300 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 41.700 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 271.845 ms (5%) | 4.290 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 327.132 ms (5%) | 5.795 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 620.900 μs (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 600.300 μs (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 7.000 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 5.033 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 610.000 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 600.100 μs (5%) | | 384.38 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.7.0 Commit 3bf9d17731 (2021-11-30 12:12 UTC) Platform Info: OS: Windows (x86_64-w64-mingw32) Microsoft Windows [Version 10.0.22000.318] CPU: 12th Gen Intel(R) Core(TM) i9-12900K: speed user nice sys idle irq #1-24 3187 MHz 44479865 0 30182238 3010213412 2266302 ticks Memory: 31.79674530029297 GB (18551.83984375 MB free) Uptime: 128536.0 sec Load Avg: 0.0 0.0 0.0 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, goldmont) ```
adrhill commented 2 years ago

Sorry for stalling this over the holidays, I guess I'm just not sure what to make of the qualitative differences in the outputs. Is there some sort of metric for image similarity we could use? Alternatively, we could also just make the "diffusion color space" a parameter.

johnnychen94 commented 2 years ago

I guess I'm just not sure what to make of the qualitative differences in the outputs. Is there some sort of metric for image similarity we could use? Alternatively, we could also just make the "diffusion color space" a parameter.

Most people use PSNR and SSIM in image restoration fields and they're implemented in https://github.com/JuliaImages/ImageQualityIndexes.jl. Compared to PSNR, SSIM gives more "visual" similarity results as it is designed based on human eyes model. There's also a multi-scale version of SSIM implemented there. I'm not sure if this satisfies your need because dithering is quite another thing.

adrhill commented 2 years ago

Thanks, I'll take a look at it!

adrhill commented 2 years ago

I made the color space a kwarg of all error diffusion methods, defaulting to XYZ.

I also noticed a small issue where clamp01 would be applied to XYZ colorants. As far as I can tell, the upper limits of XYZ are (0.95047, 1.0, 1.08883). I replaced clamp01 with a new function clamp_limits that dispatches on the color type.

github-actions[bot] commented 2 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmarks: - Target: 29 Jan 2022 - 18:31 - Baseline: 29 Jan 2022 - 18:34 * Package commits: - Target: 75b0f2 - Baseline: 2915ec * Julia commits: - Target: ac5cc9 - Baseline: ac5cc9 * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |--------------------------------------------------|------------------------------|------------------------------| | `["closest color", "binary inplace"]` | 1.37 (5%) :x: | 1.00 (1%) | | `["closest color", "binary new"]` | 1.64 (5%) :x: | 1.00 (1%) | | `["error diffusion", "color inplace"]` | 0.96 (5%) | 1.15 (1%) :x: | | `["error diffusion", "color new"]` | 0.73 (5%) :white_check_mark: | 0.50 (1%) :white_check_mark: | | `["ordered dithering", "color inplace"]` | 1.14 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color new"]` | 1.15 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary inplace"]` | 1.24 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary new"]` | 1.57 (5%) :x: | 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1638 s 1 s 155 s 2065 s 0 s #2 2593 MHz 2286 s 2 s 159 s 1430 s 0 s Memory: 6.788974761962891 GB (3404.7265625 MB free) Uptime: 392.11 sec Load Avg: 1.03 0.89 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` ### Baseline ``` Julia Version 1.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 2119 s 1 s 164 s 2887 s 0 s #2 2593 MHz 3108 s 2 s 171 s 1908 s 0 s Memory: 6.788974761962891 GB (3426.3046875 MB free) Uptime: 523.56 sec Load Avg: 1.0 0.93 0.53 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Target result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 29 Jan 2022 - 18:31 * Package commit: 75b0f2 * Julia commit: ac5cc9 * 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"]` | 8.360 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 6.917 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 145.063 ms (5%) | | 36.50 MiB (1%) | 2359336 | | `["closest color", "color new"]` | 147.027 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 1.114 ms (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 1.096 ms (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 894.506 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 893.404 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 146.974 ms (5%) | | 36.81 MiB (1%) | 2359340 | | `["error diffusion", "color new"]` | 115.664 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 4.123 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.125 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 113.501 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 110.001 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 718.862 ms (5%) | 29.264 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 850.667 ms (5%) | 44.465 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.233 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.215 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 13.900 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 12.900 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.145 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 1.125 ms (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1638 s 1 s 155 s 2065 s 0 s #2 2593 MHz 2286 s 2 s 159 s 1430 s 0 s Memory: 6.788974761962891 GB (3404.7265625 MB free) Uptime: 392.11 sec Load Avg: 1.03 0.89 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Baseline result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 29 Jan 2022 - 18:34 * Package commit: 2915ec * Julia commit: ac5cc9 * 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"]` | 6.100 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 4.217 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 145.631 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 147.451 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 1.113 ms (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 1.096 ms (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 888.305 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 876.806 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 153.511 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 158.639 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 4.152 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.154 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 113.401 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 109.601 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 629.712 ms (5%) | 13.551 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 741.044 ms (5%) | 19.321 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.229 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.214 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 11.201 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 8.200 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.129 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 1.117 ms (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 2119 s 1 s 164 s 2887 s 0 s #2 2593 MHz 3108 s 2 s 171 s 1908 s 0 s Memory: 6.788974761962891 GB (3426.3046875 MB free) Uptime: 523.56 sec Load Avg: 1.0 0.93 0.53 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.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.905 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 |
github-actions[bot] commented 2 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmarks: - Target: 29 Jan 2022 - 18:50 - Baseline: 29 Jan 2022 - 18:52 * Package commits: - Target: 0b0e28 - Baseline: 2915ec * Julia commits: - Target: ac5cc9 - Baseline: ac5cc9 * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |--------------------------------------------------|------------------------------|------------------------------| | `["closest color", "binary inplace"]` | 1.22 (5%) :x: | 1.00 (1%) | | `["closest color", "binary new"]` | 1.46 (5%) :x: | 1.00 (1%) | | `["error diffusion", "color inplace"]` | 0.96 (5%) | 1.15 (1%) :x: | | `["error diffusion", "color new"]` | 0.74 (5%) :white_check_mark: | 0.50 (1%) :white_check_mark: | | `["ordered dithering", "color inplace"]` | 1.13 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color new"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary inplace"]` | 1.31 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary new"]` | 1.26 (5%) :x: | 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1591 s 1 s 132 s 2568 s 0 s #2 2593 MHz 2233 s 1 s 175 s 1902 s 0 s Memory: 6.788978576660156 GB (3231.42578125 MB free) Uptime: 434.73 sec Load Avg: 1.01 0.86 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` ### Baseline ``` Julia Version 1.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1670 s 1 s 138 s 3760 s 0 s #2 2593 MHz 3427 s 1 s 188 s 1977 s 0 s Memory: 6.788978576660156 GB (3373.0234375 MB free) Uptime: 562.91 sec Load Avg: 1.03 0.93 0.53 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Target result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 29 Jan 2022 - 18:50 * Package commit: 0b0e28 * Julia commit: ac5cc9 * 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.200 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 5.783 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 149.313 ms (5%) | | 36.50 MiB (1%) | 2359336 | | `["closest color", "color new"]` | 147.307 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 1.109 ms (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 1.094 ms (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 1.106 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 1.101 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 146.850 ms (5%) | | 36.81 MiB (1%) | 2359340 | | `["error diffusion", "color new"]` | 116.489 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 4.313 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.326 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 115.001 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 109.700 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 702.820 ms (5%) | 33.572 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 824.456 ms (5%) | 32.616 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.231 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.214 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 14.200 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 11.000 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.136 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 1.120 ms (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1591 s 1 s 132 s 2568 s 0 s #2 2593 MHz 2233 s 1 s 175 s 1902 s 0 s Memory: 6.788978576660156 GB (3231.42578125 MB free) Uptime: 434.73 sec Load Avg: 1.01 0.86 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Baseline result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 29 Jan 2022 - 18:52 * Package commit: 2915ec * Julia commit: ac5cc9 * 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"]` | 5.925 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 3.967 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 145.583 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 147.252 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 1.109 ms (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 1.097 ms (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 1.102 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 1.100 ms (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 153.164 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 158.105 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 4.316 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 4.341 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 113.800 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 109.600 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 622.649 ms (5%) | 10.236 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 735.203 ms (5%) | 13.919 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.227 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.215 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 10.800 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 8.701 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 1.133 ms (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 1.116 ms (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1027-azure #30~20.04.1-Ubuntu SMP Wed Jan 12 20:56:50 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1670 s 1 s 138 s 3760 s 0 s #2 2593 MHz 3427 s 1 s 188 s 1977 s 0 s Memory: 6.788978576660156 GB (3373.0234375 MB free) Uptime: 562.91 sec Load Avg: 1.03 0.93 0.53 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.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.907 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 |
github-actions[bot] commented 2 years ago
Benchmark result # Judge result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmarks: - Target: 7 Feb 2022 - 21:28 - Baseline: 7 Feb 2022 - 21:30 * Package commits: - Target: afeac6 - Baseline: ab48da * Julia commits: - Target: ac5cc9 - Baseline: ac5cc9 * Julia command flags: - Target: None - Baseline: None * Environment variables: - Target: None - Baseline: None ## Results A ratio greater than `1.0` denotes a possible regression (marked with :x:), while a ratio less than `1.0` denotes a possible improvement (marked with :white_check_mark:). Only significant results - results that indicate possible regressions or improvements - are shown below (thus, an empty table means that all benchmark results remained invariant between builds). | ID | time ratio | memory ratio | |--------------------------------------------------|------------------------------|------------------------------| | `["closest color", "binary inplace"]` | 1.24 (5%) :x: | 1.00 (1%) | | `["closest color", "binary new"]` | 1.39 (5%) :x: | 1.00 (1%) | | `["closest color", "color inplace"]` | 0.93 (5%) :white_check_mark: | 1.00 (1%) | | `["closest color", "color new"]` | 0.93 (5%) :white_check_mark: | 1.00 (1%) | | `["error diffusion", "color inplace"]` | 0.98 (5%) | 1.15 (1%) :x: | | `["error diffusion", "color new"]` | 0.72 (5%) :white_check_mark: | 0.50 (1%) :white_check_mark: | | `["ordered dithering", "color inplace"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["ordered dithering", "color new"]` | 1.15 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary inplace"]` | 1.20 (5%) :x: | 1.00 (1%) | | `["threshold dithering", "binary new"]` | 1.34 (5%) :x: | 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 2988 s 1 s 194 s 762 s 0 s #2 2095 MHz 975 s 1 s 150 s 2830 s 0 s Memory: 6.784542083740234 GB (3420.40625 MB free) Uptime: 400.75 sec Load Avg: 1.0 0.87 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` ### Baseline ``` Julia Version 1.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 3076 s 1 s 201 s 2009 s 0 s #2 2095 MHz 2224 s 1 s 164 s 2913 s 0 s Memory: 6.784542083740234 GB (3534.14453125 MB free) Uptime: 535.49 sec Load Avg: 1.11 0.97 0.55 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Target result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 7 Feb 2022 - 21:28 * Package commit: afeac6 * Julia commit: ac5cc9 * 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.881 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 6.260 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 145.702 ms (5%) | | 36.50 MiB (1%) | 2359336 | | `["closest color", "color new"]` | 148.122 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 929.662 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 911.860 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 912.460 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 908.061 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 157.201 ms (5%) | | 36.81 MiB (1%) | 2359340 | | `["error diffusion", "color new"]` | 116.831 ms (5%) | | 16.01 MiB (1%) | 995660 | | `["error diffusion", "per-channel inplace"]` | 3.636 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 3.619 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 97.507 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 91.806 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 737.006 ms (5%) | 30.915 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 915.719 ms (5%) | 48.642 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.032 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.014 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 14.300 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 11.001 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 957.663 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 941.263 μs (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 2988 s 1 s 194 s 762 s 0 s #2 2095 MHz 975 s 1 s 150 s 2830 s 0 s Memory: 6.784542083740234 GB (3420.40625 MB free) Uptime: 400.75 sec Load Avg: 1.0 0.87 0.45 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.0.1 (ORCJIT, skylake-avx512) ``` --- # Baseline result # Benchmark Report for */home/runner/work/DitherPunk.jl/DitherPunk.jl* ## Job Properties * Time of benchmark: 7 Feb 2022 - 21:30 * Package commit: ab48da * Julia commit: ac5cc9 * 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"]` | 6.360 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "binary new"]` | 4.500 μs (5%) | | 64.11 KiB (1%) | 2 | | `["closest color", "color inplace"]` | 157.090 ms (5%) | | 36.48 MiB (1%) | 2357848 | | `["closest color", "color new"]` | 158.597 ms (5%) | 2.538 ms | 36.48 MiB (1%) | 2357848 | | `["closest color", "per-channel inplace"]` | 931.562 μs (5%) | | 192.05 KiB (1%) | 2 | | `["closest color", "per-channel new"]` | 914.061 μs (5%) | | 192.05 KiB (1%) | 2 | | `["error diffusion", "binary inplace"]` | 910.661 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "binary new"]` | 906.660 μs (5%) | | 320.23 KiB (1%) | 5 | | `["error diffusion", "color inplace"]` | 160.953 ms (5%) | 2.485 ms | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "color new"]` | 163.349 ms (5%) | | 31.87 MiB (1%) | 2035592 | | `["error diffusion", "per-channel inplace"]` | 3.624 ms (5%) | | 960.42 KiB (1%) | 11 | | `["error diffusion", "per-channel new"]` | 3.655 ms (5%) | | 960.42 KiB (1%) | 11 | | `["ordered dithering", "binary inplace"]` | 95.806 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "binary new"]` | 90.106 μs (5%) | | 69.42 KiB (1%) | 5 | | `["ordered dithering", "color inplace"]` | 681.726 ms (5%) | 15.863 ms | 247.07 MiB (1%) | 14417965 | | `["ordered dithering", "color new"]` | 795.713 ms (5%) | 19.962 ms | 281.11 MiB (1%) | 16473466 | | `["ordered dithering", "per-channel inplace"]` | 1.028 ms (5%) | | 207.98 KiB (1%) | 11 | | `["ordered dithering", "per-channel new"]` | 1.014 ms (5%) | | 207.98 KiB (1%) | 11 | | `["threshold dithering", "binary inplace"]` | 11.901 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "binary new"]` | 8.200 μs (5%) | | 128.27 KiB (1%) | 7 | | `["threshold dithering", "per-channel inplace"]` | 949.863 μs (5%) | | 384.38 KiB (1%) | 8 | | `["threshold dithering", "per-channel new"]` | 938.062 μs (5%) | | 384.38 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.7.1 Commit ac5cc99908 (2021-12-22 19:35 UTC) Platform Info: OS: Linux (x86_64-pc-linux-gnu) Ubuntu 20.04.3 LTS uname: Linux 5.11.0-1028-azure #31~20.04.2-Ubuntu SMP Tue Jan 18 08:46:15 UTC 2022 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8171M CPU @ 2.60GHz: speed user nice sys idle irq #1 2095 MHz 3076 s 1 s 201 s 2009 s 0 s #2 2095 MHz 2224 s 1 s 164 s 2913 s 0 s Memory: 6.784542083740234 GB (3534.14453125 MB free) Uptime: 535.49 sec Load Avg: 1.11 0.97 0.55 WORD_SIZE: 64 LIBM: libopenlibm LLVM: libLLVM-12.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.194 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 |