JuliaDynamics / ResumableFunctions.jl

C# style generators a.k.a. semi-coroutines for Julia.
Other
157 stars 18 forks source link

Fix performance regressions in #57 #73

Closed gerlero closed 1 year ago

gerlero commented 1 year ago

Quick fix for the performance regression reported in #72: reverts the changes to the definition of the Base.iterate overload, no longer delegating to generate, which is causing unnecessary allocations.

Before (master)

Direct: 
  31.114 ns (0 allocations: 0 bytes)
ResumableFunctions: 
  5.167 μs (249 allocations: 3.89 KiB)
Channels csize=0: 
  2.256 ms (97 allocations: 2.61 KiB)
Channels csize=1: 
  2.194 ms (19 allocations: 1.44 KiB)
Channels csize=20: 
  177.917 μs (20 allocations: 1.77 KiB)
Channels csize=100: 
  85.167 μs (21 allocations: 3.22 KiB)
Task scheduling
  16.917 μs (86 allocations: 3.38 KiB)
Closure: 
  1.308 μs (82 allocations: 1.28 KiB)
Closure optimised: 
  32.067 ns (0 allocations: 0 bytes)
Closure statemachine: 
  31.742 ns (0 allocations: 0 bytes)
Iteration protocol: 
  32.067 ns (0 allocations: 0 bytes)

After

Direct: 
  32.193 ns (0 allocations: 0 bytes)
ResumableFunctions: 
  32.737 ns (0 allocations: 0 bytes)
Channels csize=0: 
  2.232 ms (97 allocations: 2.61 KiB)
Channels csize=1: 
  2.230 ms (19 allocations: 1.44 KiB)
Channels csize=20: 
  173.458 μs (20 allocations: 1.77 KiB)
Channels csize=100: 
  82.083 μs (21 allocations: 3.22 KiB)
Task scheduling
  17.625 μs (86 allocations: 3.38 KiB)
Closure: 
  1.413 μs (82 allocations: 1.28 KiB)
Closure optimised: 
  32.067 ns (0 allocations: 0 bytes)
Closure statemachine: 
  31.732 ns (0 allocations: 0 bytes)
Iteration protocol: 
  32.067 ns (0 allocations: 0 bytes)

Closes #72. Note that the generate/@yieldfrom paths still cause many allocations, but (a) they're not part of the benchmarks and (b) I haven't been able to come up with a fix for that yet.

codecov-commenter commented 1 year ago

Codecov Report

Merging #73 (40de7da) into master (3ec3b15) will decrease coverage by 0.17%. Report is 1 commits behind head on master. The diff coverage is 100.00%.

:exclamation: Current head 40de7da differs from pull request most recent head eb4b3fe. Consider uploading reports for the commit eb4b3fe to get more accurate results

@@            Coverage Diff             @@
##           master      #73      +/-   ##
==========================================
- Coverage   87.22%   87.06%   -0.17%     
==========================================
  Files           5        5              
  Lines         321      317       -4     
==========================================
- Hits          280      276       -4     
  Misses         41       41              
Files Changed Coverage Δ
src/types.jl 100.00% <100.00%> (ø)

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

gerlero commented 1 year ago

FWIW, I've also tried the code from #67 but this change doesn't seem to affect that at all.

gerlero commented 1 year ago

@Krastanov I understand what JET is complaining about, but I'm not sure what's the right way to make it happy.

What are your thoughts on adding a dummy definition of (::FiniteStateMachineIterator)(...) that throws?

Krastanov commented 1 year ago

This looks good to me. Let me merge another PR that adds the benchmarks to CI, then I will rerun the CI here and merge.

I will look into the JET report, but unless there is a very clean non-hacky fix, I would just bump the number of disregarded warnings.

github-actions[bot] commented 1 year ago
Benchmark Result # Judge result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmarks: - Target: 6 Sep 2023 - 19:54 - Baseline: 6 Sep 2023 - 19:55 * Package commits: - Target: 605e21 - Baseline: ce9084 * Julia commits: - Target: a5b219 - Baseline: a5b219 * 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 | |---------------------------------------------------------|------------------------------|------------------------------| | `["hardcoded types", "BigInt", "Closure optimized"]` | 1.09 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 1.12 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Closure"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Direct"]` | 1.06 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 1.08 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 0.50 (5%) :white_check_mark: | 0.76 (1%) :white_check_mark: | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 0.01 (5%) :white_check_mark: | 0.00 (1%) :white_check_mark: | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ### Target ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1942 s 0 s 320 s 1167 s 0 s #2 2593 MHz 448 s 0 s 150 s 2802 s 0 s Memory: 6.7694854736328125 GB (4306.5859375 MB free) Uptime: 349.36 sec Load Avg: 1.02 0.8 0.39 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` ### Baseline ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 2265 s 0 s 356 s 1408 s 0 s #2 2593 MHz 673 s 0 s 179 s 3148 s 0 s Memory: 6.7694854736328125 GB (4839.06640625 MB free) Uptime: 409.49 sec Load Avg: 1.01 0.84 0.43 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Target result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 19:54 * Package commit: 605e21 * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 281.202 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 280.201 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 90.200 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 99.201 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 6.020 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 6.700 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 7.875 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.667 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.783 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 6.360 μs (5%) | | 4.50 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 33.200 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 269.201 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 271.102 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 83.000 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 91.701 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 23.347 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 66.837 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.589 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 23.370 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 42.281 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 66.837 ns (5%) | | | | | `["hardcoded types", "Int64", "Task scheduling"]` | 22.200 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1942 s 0 s 320 s 1167 s 0 s #2 2593 MHz 448 s 0 s 150 s 2802 s 0 s Memory: 6.7694854736328125 GB (4306.5859375 MB free) Uptime: 349.36 sec Load Avg: 1.02 0.8 0.39 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Baseline result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 19:55 * Package commit: ce9084 * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 279.803 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 284.401 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 91.000 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 100.700 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 5.520 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 6.000 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 7.300 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.367 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.367 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 12.780 μs (5%) | | 5.95 KiB (1%) | 284 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 33.500 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 269.402 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 273.702 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 82.901 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 91.701 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 23.347 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 66.837 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.533 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 23.370 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 42.180 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 9.188 μs (5%) | | 3.89 KiB (1%) | 249 | | `["hardcoded types", "Int64", "Task scheduling"]` | 23.200 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 2265 s 0 s 356 s 1408 s 0 s #2 2593 MHz 673 s 0 s 179 s 3148 s 0 s Memory: 6.7694854736328125 GB (4839.06640625 MB free) Uptime: 409.49 sec Load Avg: 1.01 0.84 0.43 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Runtime information | Runtime Info | | |:--|:--| | BLAS #threads | 1 | | `BLAS.vendor()` | `lbt` | | `Sys.CPU_THREADS` | 2 | `lscpu` output: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz CPU family: 6 Model: 85 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Stepping: 7 BogoMIPS: 5187.81 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 avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear Hypervisor vendor: Microsoft Virtualization type: full L1d cache: 64 KiB (2 instances) L1i cache: 64 KiB (2 instances) L2 cache: 2 MiB (2 instances) L3 cache: 35.8 MiB (1 instance) NUMA node(s): 1 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 Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown Vulnerability Retbleed: Vulnerable Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown | 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 |
Benchmark Result # Judge result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmarks: - Target: 6 Sep 2023 - 20:07 - Baseline: 6 Sep 2023 - 20:08 * Package commits: - Target: e2a26c - Baseline: ce9084 * Julia commits: - Target: a5b219 - Baseline: a5b219 * 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 | |---------------------------------------------------------|------------------------------|------------------------------| | `["hardcoded types", "BigInt", "Closure optimized"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 1.11 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Direct"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 0.48 (5%) :white_check_mark: | 0.76 (1%) :white_check_mark: | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 0.01 (5%) :white_check_mark: | 0.00 (1%) :white_check_mark: | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ### Target ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 544 s 0 s 159 s 3532 s 0 s #2 2593 MHz 1909 s 0 s 327 s 1969 s 0 s Memory: 6.7694854736328125 GB (4439.65234375 MB free) Uptime: 430.45 sec Load Avg: 1.06 0.83 0.42 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` ### Baseline ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1045 s 0 s 212 s 3603 s 0 s #2 2593 MHz 1986 s 0 s 338 s 2506 s 0 s Memory: 6.7694854736328125 GB (4879.41015625 MB free) Uptime: 493.07 sec Load Avg: 1.02 0.86 0.46 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Target result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 20:7 * Package commit: e2a26c * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 277.704 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 283.905 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 90.701 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 100.301 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 6.000 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 6.780 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 7.675 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.867 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.783 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 6.333 μs (5%) | | 4.50 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 33.101 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 270.004 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 272.504 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 83.901 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 92.701 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 23.394 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 54.813 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.489 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 23.370 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 94.567 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 54.813 ns (5%) | | | | | `["hardcoded types", "Int64", "Task scheduling"]` | 22.800 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 544 s 0 s 159 s 3532 s 0 s #2 2593 MHz 1909 s 0 s 327 s 1969 s 0 s Memory: 6.7694854736328125 GB (4439.65234375 MB free) Uptime: 430.45 sec Load Avg: 1.06 0.83 0.42 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Baseline result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 20:8 * Package commit: ce9084 * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 278.009 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 281.904 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 90.701 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 99.903 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 5.583 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 6.100 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 7.500 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.467 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.484 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 13.067 μs (5%) | | 5.95 KiB (1%) | 284 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 33.000 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 270.804 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 272.704 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 83.701 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 92.601 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 23.293 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 54.813 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.522 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 23.370 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 94.881 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 9.010 μs (5%) | | 3.89 KiB (1%) | 249 | | `["hardcoded types", "Int64", "Task scheduling"]` | 22.301 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz: speed user nice sys idle irq #1 2593 MHz 1045 s 0 s 212 s 3603 s 0 s #2 2593 MHz 1986 s 0 s 338 s 2506 s 0 s Memory: 6.7694854736328125 GB (4879.41015625 MB free) Uptime: 493.07 sec Load Avg: 1.02 0.86 0.46 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, skylake-avx512) Threads: 1 on 2 virtual cores ``` --- # Runtime information | Runtime Info | | |:--|:--| | BLAS #threads | 1 | | `BLAS.vendor()` | `lbt` | | `Sys.CPU_THREADS` | 2 | `lscpu` output: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) Platinum 8272CL CPU @ 2.60GHz CPU family: 6 Model: 85 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Stepping: 7 BogoMIPS: 5187.81 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 avx512f avx512dq rdseed adx smap clflushopt avx512cd avx512bw avx512vl xsaveopt xsavec xsaves md_clear Hypervisor vendor: Microsoft Virtualization type: full L1d cache: 64 KiB (2 instances) L1i cache: 64 KiB (2 instances) L2 cache: 2 MiB (2 instances) L3 cache: 35.8 MiB (1 instance) NUMA node(s): 1 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 Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown Vulnerability Retbleed: Vulnerable Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown | 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 |
Benchmark Result # Judge result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmarks: - Target: 6 Sep 2023 - 20:09 - Baseline: 6 Sep 2023 - 20:10 * Package commits: - Target: 5c96c4 - Baseline: ce9084 * Julia commits: - Target: a5b219 - Baseline: a5b219 * 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 | |---------------------------------------------------------|------------------------------|------------------------------| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 0.94 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 0.87 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 0.95 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 1.15 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "Closure"]` | 1.05 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 0.47 (5%) :white_check_mark: | 0.76 (1%) :white_check_mark: | | `["hardcoded types", "Int64", "Channels csize=0"]` | 0.90 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "Int64", "Channels csize=20"]` | 0.93 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "Int64", "Closure optimized"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "Int64", "Closure statemachine"]` | 0.94 (5%) :white_check_mark: | 1.00 (1%) | | `["hardcoded types", "Int64", "Direct"]` | 1.07 (5%) :x: | 1.00 (1%) | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 0.01 (5%) :white_check_mark: | 0.00 (1%) :white_check_mark: | | `["hardcoded types", "Int64", "Task scheduling"]` | 0.90 (5%) :white_check_mark: | 1.00 (1%) | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ### Target ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 893 s 0 s 199 s 3136 s 0 s #2 2294 MHz 2073 s 0 s 365 s 1735 s 0 s Memory: 6.7694854736328125 GB (4318.359375 MB free) Uptime: 430.49 sec Load Avg: 1.2 0.92 0.47 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell) Threads: 1 on 2 virtual cores ``` ### Baseline ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 903 s 0 s 217 s 3866 s 0 s #2 2294 MHz 2763 s 0 s 426 s 1743 s 0 s Memory: 6.7694854736328125 GB (4832.80078125 MB free) Uptime: 506.52 sec Load Avg: 1.21 0.98 0.53 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell) Threads: 1 on 2 virtual cores ``` --- # Target result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 20:9 * Package commit: 5c96c4 * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 256.801 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 261.201 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 87.000 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 93.300 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 5.780 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 7.520 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 8.350 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.480 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.660 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 6.260 μs (5%) | | 4.50 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 34.300 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 245.601 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 271.701 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 82.700 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 82.900 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 26.131 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 61.327 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.400 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 25.904 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 55.522 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 57.434 ns (5%) | | | | | `["hardcoded types", "Int64", "Task scheduling"]` | 23.000 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 893 s 0 s 199 s 3136 s 0 s #2 2294 MHz 2073 s 0 s 365 s 1735 s 0 s Memory: 6.7694854736328125 GB (4318.359375 MB free) Uptime: 430.49 sec Load Avg: 1.2 0.92 0.47 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell) Threads: 1 on 2 virtual cores ``` --- # Baseline result # Benchmark Report for */home/runner/work/ResumableFunctions.jl/ResumableFunctions.jl* ## Job Properties * Time of benchmark: 6 Sep 2023 - 20:10 * Package commit: ce9084 * Julia commit: a5b219 * 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 | |---------------------------------------------------------|----------------:|--------:|--------------:|------------:| | `["hardcoded types", "BigInt", "Channels csize=0"]` | 273.501 μs (5%) | | 7.27 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=1"]` | 300.501 μs (5%) | | 7.31 KiB (1%) | 302 | | `["hardcoded types", "BigInt", "Channels csize=100"]` | 91.600 μs (5%) | | 9.09 KiB (1%) | 304 | | `["hardcoded types", "BigInt", "Channels csize=20"]` | 96.800 μs (5%) | | 7.64 KiB (1%) | 303 | | `["hardcoded types", "BigInt", "Closure optimized"]` | 5.740 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Closure statemachine"]` | 6.540 μs (5%) | | 4.53 KiB (1%) | 195 | | `["hardcoded types", "BigInt", "Closure"]` | 7.925 μs (5%) | | 4.47 KiB (1%) | 192 | | `["hardcoded types", "BigInt", "Direct"]` | 5.280 μs (5%) | | 4.39 KiB (1%) | 188 | | `["hardcoded types", "BigInt", "Iteration protocol"]` | 5.880 μs (5%) | | 4.48 KiB (1%) | 191 | | `["hardcoded types", "BigInt", "ResumableFunctions"]` | 13.240 μs (5%) | | 5.95 KiB (1%) | 284 | | `["hardcoded types", "BigInt", "Task scheduling"]` | 33.800 μs (5%) | | 5.27 KiB (1%) | 197 | | `["hardcoded types", "Int64", "Channels csize=0"]` | 272.100 μs (5%) | | 2.61 KiB (1%) | 97 | | `["hardcoded types", "Int64", "Channels csize=1"]` | 274.600 μs (5%) | | 1.44 KiB (1%) | 19 | | `["hardcoded types", "Int64", "Channels csize=100"]` | 80.701 μs (5%) | | 3.22 KiB (1%) | 21 | | `["hardcoded types", "Int64", "Channels csize=20"]` | 88.700 μs (5%) | | 1.77 KiB (1%) | 20 | | `["hardcoded types", "Int64", "Closure optimized"]` | 24.523 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure statemachine"]` | 65.306 ns (5%) | | | | | `["hardcoded types", "Int64", "Closure"]` | 2.522 μs (5%) | | 1.28 KiB (1%) | 82 | | `["hardcoded types", "Int64", "Direct"]` | 24.297 ns (5%) | | | | | `["hardcoded types", "Int64", "Iteration protocol"]` | 58.257 ns (5%) | | | | | `["hardcoded types", "Int64", "ResumableFunctions"]` | 10.087 μs (5%) | | 3.89 KiB (1%) | 249 | | `["hardcoded types", "Int64", "Task scheduling"]` | 25.500 μs (5%) | | 2.05 KiB (1%) | 85 | ## Benchmark Group List Here's a list of all the benchmark groups executed by this job: - `["hardcoded types", "BigInt"]` - `["hardcoded types", "Int64"]` ## Julia versioninfo ``` Julia Version 1.11.0-DEV.418 Commit a5b2197fe46 (2023-09-06 12:56 UTC) Build Info: Official https://julialang.org/ release Platform Info: OS: Linux (x86_64-linux-gnu) Ubuntu 22.04.3 LTS uname: Linux 5.15.0-1041-azure #48-Ubuntu SMP Tue Jun 20 20:34:08 UTC 2023 x86_64 x86_64 CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz: speed user nice sys idle irq #1 2294 MHz 903 s 0 s 217 s 3866 s 0 s #2 2294 MHz 2763 s 0 s 426 s 1743 s 0 s Memory: 6.7694854736328125 GB (4832.80078125 MB free) Uptime: 506.52 sec Load Avg: 1.21 0.98 0.53 WORD_SIZE: 64 LLVM: libLLVM-15.0.7 (ORCJIT, broadwell) Threads: 1 on 2 virtual cores ``` --- # Runtime information | Runtime Info | | |:--|:--| | BLAS #threads | 1 | | `BLAS.vendor()` | `lbt` | | `Sys.CPU_THREADS` | 2 | `lscpu` output: Architecture: x86_64 CPU op-mode(s): 32-bit, 64-bit Address sizes: 46 bits physical, 48 bits virtual Byte Order: Little Endian CPU(s): 2 On-line CPU(s) list: 0,1 Vendor ID: GenuineIntel Model name: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz CPU family: 6 Model: 79 Thread(s) per core: 1 Core(s) per socket: 2 Socket(s): 1 Stepping: 1 BogoMIPS: 4589.37 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 Hypervisor vendor: Microsoft Virtualization type: full L1d cache: 64 KiB (2 instances) L1i cache: 64 KiB (2 instances) L2 cache: 512 KiB (2 instances) L3 cache: 50 MiB (1 instance) NUMA node(s): 1 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 Mmio stale data: Vulnerable: Clear CPU buffers attempted, no microcode; SMT Host state unknown Vulnerability Retbleed: Not affected Vulnerability Spec store bypass: Vulnerable Vulnerability Spectre v1: Mitigation; usercopy/swapgs barriers and __user pointer sanitization Vulnerability Spectre v2: Mitigation; Retpolines, STIBP disabled, RSB filling, PBRSB-eIBRS Not affected Vulnerability Srbds: Not affected Vulnerability Tsx async abort: Mitigation; Clear CPU buffers; SMT Host state unknown | 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 |