Skip to content
New issue

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

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

Already on GitHub? Sign in to your account

Release/v3.0.0 #50

Merged
merged 29 commits into from
May 1, 2023
Merged

Release/v3.0.0 #50

merged 29 commits into from
May 1, 2023

Conversation

CiaranOMara
Copy link
Member

This PR refactors GenomicFeatures to make use of abstract types.

This PR contains the following breaking changes.

  • The Interval type is renamed GenomicInterval and now subtypes AbstractGenomicInterval.
  • The IntervalCollection is now GenomicIntervalCollection, and the element type of the collection is now the AbstractGenomicInterval instead of the interval's metadata type.
  • Intervals are now grouped by the more generic groupname instead of seqname.

This commit makes the `IntervalCollection` element type generic, which is a breaking change.
@CiaranOMara CiaranOMara requested a review from a team April 20, 2023 15:43
@github-actions
Copy link
Contributor

Benchmark result

Judge result

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

Job Properties

  • Time of benchmarks:
    • Target: 20 Apr 2023 - 15:46
    • Baseline: 20 Apr 2023 - 15:47
  • Package commits:
    • Target: 5dffa7
    • Baseline: b99efc
  • Julia commits:
    • Target: 17cfb8
    • Baseline: 17cfb8
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["insert", "type"] 2.51 (5%) ❌ 1.77 (1%) ❌

Benchmark Group List

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

  • ["insert"]

Julia versioninfo

Target

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1035-azure #42-Ubuntu SMP Tue Feb 28 19:41:23 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       1460 s          0 s        245 s       1071 s          0 s
       #2  2593 MHz        488 s          0 s        141 s       2134 s          0 s
  Memory: 6.781211853027344 GB (5241.19140625 MB free)
  Uptime: 281.84 sec
  Load Avg:  1.07  0.82  0.38
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, skylake-avx512)
  Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1035-azure #42-Ubuntu SMP Tue Feb 28 19:41:23 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       1739 s          0 s        264 s       1293 s          0 s
       #2  2593 MHz        681 s          0 s        180 s       2422 s          0 s
  Memory: 6.781211853027344 GB (5251.9609375 MB free)
  Uptime: 333.89 sec
  Load Avg:  1.03  0.85  0.42
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, skylake-avx512)
  Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 20 Apr 2023 - 15:46
  • Package commit: 5dffa7
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{GenomicInterval{Int64}}", "groupname"] 3.063 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "leftposition"] 1.300 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "metadata"] 1.300 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "rightposition"] 1.310 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "strand"] 953.885 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 35.295 ms (5%) 2.495 ms 104.03 MiB (1%) 589881
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 115.012 ms (5%) 25.014 ms 232.40 MiB (1%) 2061663
["eachoverlap", "Vector{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 29.767 ms (5%) 86.02 MiB (1%) 294939
["eachoverlap", "Vector{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 108.184 ms (5%) 17.664 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 37.901 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 99.203 μs (5%) 135.28 KiB (1%) 100
["push", "Vector{GenomicInterval{Int64}}"] 238.906 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{GenomicInterval{Int64}}"] 180.905 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{GenomicInterval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1035-azure #42-Ubuntu SMP Tue Feb 28 19:41:23 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       1460 s          0 s        245 s       1071 s          0 s
       #2  2593 MHz        488 s          0 s        141 s       2134 s          0 s
  Memory: 6.781211853027344 GB (5241.19140625 MB free)
  Uptime: 281.84 sec
  Load Avg:  1.07  0.82  0.38
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, skylake-avx512)
  Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 20 Apr 2023 - 15:47
  • Package commit: b99efc
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{Interval{Int64}}", "leftposition"] 1.100 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "metadata"] 1.200 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "rightposition"] 1.200 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "seqname"] 2.500 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "strand"] 900.000 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "IntervalCollection{Int64}, IntervalCollection{Int64}"] 35.406 ms (5%) 2.344 ms 104.03 MiB (1%) 589881
["eachoverlap", "IntervalCollection{Int64}, Vector{Interval{Int64}}"] 115.445 ms (5%) 19.703 ms 227.87 MiB (1%) 2061663
["eachoverlap", "Vector{Interval{Int64}}, IntervalCollection{Int64}"] 29.886 ms (5%) 86.02 MiB (1%) 294939
["eachoverlap", "Vector{Interval{Int64}}, Vector{Interval{Int64}}"] 110.280 ms (5%) 21.296 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 39.600 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 39.601 μs (5%) 76.48 KiB (1%) 96
["push", "Vector{Interval{Int64}}"] 246.507 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{Interval{Int64}}"] 185.105 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{Interval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1035-azure #42-Ubuntu SMP Tue Feb 28 19:41:23 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       1739 s          0 s        264 s       1293 s          0 s
       #2  2593 MHz        681 s          0 s        180 s       2422 s          0 s
  Memory: 6.781211853027344 GB (5251.9609375 MB free)
  Uptime: 333.89 sec
  Load Avg:  1.03  0.85  0.42
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, skylake-avx512)
  Threads: 1 on 2 virtual cores

Runtime information

Runtime Info
BLAS #threads 1
BLAS.vendor() openblas64
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

Copy link
Member

@kescobo kescobo left a comment

Choose a reason for hiding this comment

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

I'm not going to pretend I understand the scope of these changes. I can do a more detailed review if you think that would be helpful, but I trust you to make good decisions here.

My only high-level comment is that all doctests should probably pass (or be removed) at this stage before merging. No reason to have our first post-1.0 docs be instantly outdated 😉

@CiaranOMara
Copy link
Member Author

@kescobo, this PR is now ready for review again. I think I addressed your comment and tidied up a few loose ends.

@CiaranOMara CiaranOMara marked this pull request as ready for review April 27, 2023 12:58
Copy link
Member

@kescobo kescobo left a comment

Choose a reason for hiding this comment

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

I left a bunch of comments, but the vast majority amount to style preferences, and I do not feel strongly enough to consider them blocking. There is one spot where it looks like a T didn't get correctly changed to I (or vice versa), but that's the only part of this review that I would insist on.

The big style ones that show up in a few places look as if you were copying the previous style, but I think should be changed are

  1. A bunch of block that have the struture if ... return X; end; if ... return Y; end; return Z that I think should either be if/elseif/else, or else use short-circuiting && return X
  2. A bunch of function definitions that are are just returning something that I think could be written with foo() = X rather than function foo(); return X; end

In both cases, I commented on one or two examples, but there were many more that I didn't flag. If you do want to make these changes but don't want to put in the extra tedious effort, I can do them as a separate PR - neither of them should change the functionality, so they can safely be done after v3.0 is tagged.

src/GenomicFeatures.jl Outdated Show resolved Hide resolved
src/GenomicFeatures.jl Outdated Show resolved Hide resolved
src/GenomicFeatures.jl Show resolved Hide resolved
src/GenomicFeatures.jl Outdated Show resolved Hide resolved
src/GenomicFeatures.jl Show resolved Hide resolved
src/coverage.jl Show resolved Hide resolved
src/interval.jl Show resolved Hide resolved
src/interval.jl Show resolved Hide resolved
src/interval.jl Outdated Show resolved Hide resolved
src/interval.jl Outdated Show resolved Hide resolved
kescobo
kescobo previously approved these changes Apr 28, 2023
@github-actions
Copy link
Contributor

Benchmark result

Judge result

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

Job Properties

  • Time of benchmarks:
    • Target: 29 Apr 2023 - 02:33
    • Baseline: 29 Apr 2023 - 02:34
  • Package commits:
    • Target: 464597
    • Baseline: b99efc
  • Julia commits:
    • Target: 17cfb8
    • Baseline: 17cfb8
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["insert", "shorthand"] 0.80 (5%) ✅ 1.00 (1%)
["insert", "type"] 2.13 (5%) ❌ 1.77 (1%) ❌

Benchmark Group List

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

  • ["insert"]

Julia versioninfo

Target

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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        701 s          0 s        213 s       2490 s          0 s
       #2  2294 MHz       1534 s          0 s        224 s       1606 s          0 s
  Memory: 6.781208038330078 GB (5320.34375 MB free)
  Uptime: 346.24 sec
  Load Avg:  1.1  0.78  0.37
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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        743 s          0 s        217 s       3004 s          0 s
       #2  2294 MHz       2010 s          0 s        272 s       1644 s          0 s
  Memory: 6.781208038330078 GB (5218.80078125 MB free)
  Uptime: 402.32 sec
  Load Avg:  1.07  0.84  0.42
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 29 Apr 2023 - 2:33
  • Package commit: 464597
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{GenomicInterval{Int64}}", "groupname"] 1.550 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "leftposition"] 1.110 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "metadata"] 1.100 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "rightposition"] 1.110 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "strand"] 835.078 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 38.620 ms (5%) 3.609 ms 104.03 MiB (1%) 589881
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 122.732 ms (5%) 22.415 ms 232.40 MiB (1%) 2061663
["eachoverlap", "Vector{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 35.726 ms (5%) 4.306 ms 86.02 MiB (1%) 294939
["eachoverlap", "Vector{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 124.712 ms (5%) 25.562 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 33.301 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 86.101 μs (5%) 135.28 KiB (1%) 100
["push", "Vector{GenomicInterval{Int64}}"] 214.800 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{GenomicInterval{Int64}}"] 155.900 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{GenomicInterval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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        701 s          0 s        213 s       2490 s          0 s
       #2  2294 MHz       1534 s          0 s        224 s       1606 s          0 s
  Memory: 6.781208038330078 GB (5320.34375 MB free)
  Uptime: 346.24 sec
  Load Avg:  1.1  0.78  0.37
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 29 Apr 2023 - 2:34
  • Package commit: b99efc
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{Interval{Int64}}", "leftposition"] 1.100 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "metadata"] 1.200 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "rightposition"] 1.200 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "seqname"] 1.500 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "strand"] 800.000 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "IntervalCollection{Int64}, IntervalCollection{Int64}"] 41.648 ms (5%) 3.238 ms 104.03 MiB (1%) 589881
["eachoverlap", "IntervalCollection{Int64}, Vector{Interval{Int64}}"] 137.419 ms (5%) 24.603 ms 227.87 MiB (1%) 2061663
["eachoverlap", "Vector{Interval{Int64}}, IntervalCollection{Int64}"] 37.710 ms (5%) 4.445 ms 86.02 MiB (1%) 294939
["eachoverlap", "Vector{Interval{Int64}}, Vector{Interval{Int64}}"] 118.223 ms (5%) 14.144 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 41.400 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 40.500 μs (5%) 76.48 KiB (1%) 96
["push", "Vector{Interval{Int64}}"] 217.001 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{Interval{Int64}}"] 155.201 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{Interval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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        743 s          0 s        217 s       3004 s          0 s
       #2  2294 MHz       2010 s          0 s        272 s       1644 s          0 s
  Memory: 6.781208038330078 GB (5218.80078125 MB free)
  Uptime: 402.32 sec
  Load Avg:  1.07  0.84  0.42
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Runtime information

Runtime Info
BLAS #threads 1
BLAS.vendor() openblas64
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

@github-actions
Copy link
Contributor

Benchmark result

Judge result

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

Job Properties

  • Time of benchmarks:
    • Target: 29 Apr 2023 - 02:59
    • Baseline: 29 Apr 2023 - 03:00
  • Package commits:
    • Target: 8ddc14
    • Baseline: b99efc
  • Julia commits:
    • Target: 17cfb8
    • Baseline: 17cfb8
  • Julia command flags:
    • Target: None
    • Baseline: None
  • Environment variables:
    • Target: None
    • Baseline: None

Results

A ratio greater than 1.0 denotes a possible regression (marked with ❌), while a ratio less
than 1.0 denotes a possible improvement (marked with ✅). Only significant results - results
that indicate possible regressions or improvements - are shown below (thus, an empty table means that all
benchmark results remained invariant between builds).

ID time ratio memory ratio
["insert", "shorthand"] 0.94 (5%) ✅ 1.00 (1%)
["insert", "type"] 2.50 (5%) ❌ 1.77 (1%) ❌

Benchmark Group List

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

  • ["insert"]

Julia versioninfo

Target

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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       1679 s          0 s        279 s       2019 s          0 s
       #2  2294 MHz        799 s          0 s        190 s       2966 s          0 s
  Memory: 6.781208038330078 GB (5298.90625 MB free)
  Uptime: 404.47 sec
  Load Avg:  1.04  0.85  0.43
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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       1974 s          0 s        287 s       2326 s          0 s
       #2  2294 MHz       1074 s          0 s        230 s       3260 s          0 s
  Memory: 6.781208038330078 GB (5207.24609375 MB free)
  Uptime: 465.64 sec
  Load Avg:  1.01  0.88  0.47
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Target result

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

Job Properties

  • Time of benchmark: 29 Apr 2023 - 2:59
  • Package commit: 8ddc14
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{GenomicInterval{Int64}}", "groupname"] 2.250 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "leftposition"] 1.470 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "metadata"] 1.440 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "rightposition"] 1.370 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{GenomicInterval{Int64}}", "strand"] 941.176 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 42.809 ms (5%) 3.192 ms 104.03 MiB (1%) 589881
["eachoverlap", "GenomicIntervalCollection{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 145.573 ms (5%) 26.765 ms 232.40 MiB (1%) 2061663
["eachoverlap", "Vector{GenomicInterval{Int64}}, GenomicIntervalCollection{GenomicInterval{Int64}}"] 40.677 ms (5%) 4.970 ms 86.02 MiB (1%) 294939
["eachoverlap", "Vector{GenomicInterval{Int64}}, Vector{GenomicInterval{Int64}}"] 132.675 ms (5%) 15.228 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 43.700 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 113.098 μs (5%) 135.28 KiB (1%) 100
["push", "Vector{GenomicInterval{Int64}}"] 244.096 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{GenomicInterval{Int64}}"] 185.197 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{GenomicInterval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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       1679 s          0 s        279 s       2019 s          0 s
       #2  2294 MHz        799 s          0 s        190 s       2966 s          0 s
  Memory: 6.781208038330078 GB (5298.90625 MB free)
  Uptime: 404.47 sec
  Load Avg:  1.04  0.85  0.43
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Baseline result

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

Job Properties

  • Time of benchmark: 29 Apr 2023 - 3:0
  • Package commit: b99efc
  • Julia commit: 17cfb8
  • 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
["accessors", "Vector{Interval{Int64}}", "leftposition"] 1.399 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "metadata"] 1.499 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "rightposition"] 1.599 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "seqname"] 1.900 μs (5%) 7.94 KiB (1%) 1
["accessors", "Vector{Interval{Int64}}", "strand"] 999.000 ns (5%) 1.06 KiB (1%) 1
["eachoverlap", "IntervalCollection{Int64}, IntervalCollection{Int64}"] 44.747 ms (5%) 3.438 ms 104.03 MiB (1%) 589881
["eachoverlap", "IntervalCollection{Int64}, Vector{Interval{Int64}}"] 153.520 ms (5%) 27.342 ms 227.87 MiB (1%) 2061663
["eachoverlap", "Vector{Interval{Int64}}, IntervalCollection{Int64}"] 39.986 ms (5%) 4.446 ms 86.02 MiB (1%) 294939
["eachoverlap", "Vector{Interval{Int64}}, Vector{Interval{Int64}}"] 156.714 ms (5%) 28.328 ms 215.91 MiB (1%) 2061659
["insert", "shorthand"] 46.499 μs (5%) 76.48 KiB (1%) 96
["insert", "type"] 45.299 μs (5%) 76.48 KiB (1%) 96
["push", "Vector{Interval{Int64}}"] 244.796 μs (5%) 105.91 KiB (1%) 148
["sort", "Vector{Interval{Int64}}"] 182.198 μs (5%) 58.80 KiB (1%) 4

Benchmark Group List

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

  • ["accessors", "Vector{Interval{Int64}}"]
  • ["eachoverlap"]
  • ["insert"]
  • ["push"]
  • ["sort"]

Julia versioninfo

Julia Version 1.8.5
Commit 17cfb8e65ea (2023-01-08 06:45 UTC)
Platform Info:
  OS: Linux (x86_64-linux-gnu)
      Ubuntu 22.04.2 LTS
  uname: Linux 5.15.0-1036-azure #43-Ubuntu SMP Wed Mar 29 16:11:05 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       1974 s          0 s        287 s       2326 s          0 s
       #2  2294 MHz       1074 s          0 s        230 s       3260 s          0 s
  Memory: 6.781208038330078 GB (5207.24609375 MB free)
  Uptime: 465.64 sec
  Load Avg:  1.01  0.88  0.47
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-13.0.1 (ORCJIT, broadwell)
  Threads: 1 on 2 virtual cores

Runtime information

Runtime Info
BLAS #threads 1
BLAS.vendor() openblas64
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

@CiaranOMara
Copy link
Member Author

Thanks @kescobo.

@CiaranOMara CiaranOMara merged commit 4f588de into master May 1, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants