StaticArrays.jl
StaticArrays.jl copied to clipboard
RFC: setindex! for non-isbits MArrays
Here I've tried implementing this for the sake of people using MArray in generic code, even though it's unlikely to be fast. (Furthermore I can't think of a way to make it fast. It's like we need a weird kind of mutable pseudo-container which is guaranteed to be inlined as a part of the parent struct, such that you can't access it separately. Ironically a mutable FieldArray
should work like this.)
Overall I'm somewhat inclined to do this but not decided. If we leave this as-is, it doesn't leave a good option for people wanting to write generic code using MArray
. It seems we can have:
- "just works" but potentially quite slow. Could be nice for generic code, especially if people want to put in
BigFloat
or suchlike on occasion. - Fails hard but clearly directs people to use
SizedArray
. Good for aspiring performance hackers but kind of bad for everyone else.
The generated code for this isn't great. Basically m[i] = v
turns into a big pile of (ifelse(i == 1, v, m[1]), ifelse(i == 2, v, m[2]), ...)
to construct a new tuple which m.data
will be set to.
Thoughts?
Benchmark result
Judge result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmarks:
- Target: 27 Feb 2020 - 08:13
- Baseline: 27 Feb 2020 - 08:22
- Package commits:
- Target: 371917
- Baseline: f33060
- Julia commits:
- Target: 2d5741
- Baseline: 2d5741
- 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 |
---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "*", "02", "Matrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "*", "10", "Matrix"] |
1.14 (5%) :x: | 1.00 (1%) |
["matrix_ops", "*", "10", "SMatrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "*", "20", "Matrix"] |
1.17 (5%) :x: | 1.00 (1%) |
["matrix_ops", "*", "20", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "01", "Matrix"] |
1.12 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "01", "SMatrix"] |
1.16 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "02", "Matrix"] |
1.12 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "02", "SMatrix"] |
1.08 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "03", "Matrix"] |
0.92 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "\\", "03", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "04", "Matrix"] |
0.93 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "\\", "04", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "10", "SMatrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "01", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "02", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "03", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "03", "SMatrix"] |
1.08 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "04", "Matrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "10", "SMatrix"] |
1.11 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "02", "Matrix"] |
1.05 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "02", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "10", "SMatrix"] |
1.09 (5%) :x: | 1.00 (1%) |
["matrix_ops", "inv", "01", "Matrix"] |
0.94 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "inv", "04", "Matrix"] |
0.82 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "inv", "10", "Matrix"] |
1.08 (5%) :x: | 1.00 (1%) |
["matrix_ops", "inv", "10", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["qr", "S=1", "SMatrix"] |
1.11 (5%) :x: | 1.00 (1%) |
["qr", "S=11", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["qr", "S=11", "SMatrix"] |
1.26 (5%) :x: | 1.00 (1%) |
["qr", "S=14", "Matrix"] |
0.91 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=14", "SMatrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["qr", "S=15", "Matrix"] |
0.93 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=5", "Matrix"] |
0.93 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=6", "Matrix"] |
0.93 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=6", "SMatrix"] |
0.92 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=9", "Matrix"] |
0.92 (5%) :white_check_mark: | 1.00 (1%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Target
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1031-azure #33-Ubuntu SMP Thu Feb 6 22:26:13 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 43481 s 0 s 6350 s 45525 s 0 s
#2 2397 MHz 51029 s 0 s 3670 s 40571 s 0 s
Memory: 6.782741546630859 GB (3030.7109375 MB free)
Uptime: 972.0 sec
Load Avg: 1.052734375 1.15771484375 0.80615234375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Baseline
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1031-azure #33-Ubuntu SMP Thu Feb 6 22:26:13 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 80399 s 0 s 7128 s 58808 s 0 s
#2 2397 MHz 66177 s 0 s 4508 s 75707 s 0 s
Memory: 6.782741546630859 GB (3000.26953125 MB free)
Uptime: 1486.0 sec
Load Avg: 1.06787109375 1.0751953125 0.93115234375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Target result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 8:13
- Package commit: 371917
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
196.615 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
48.630 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
60.836 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
229.821 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
583.179 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
219.479 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
2.167 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.780 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
119.703 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
5.200 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
1.940 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
10.410 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
2.011 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
25.930 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
2.089 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
257.312 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
4.157 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.860 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
13.300 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
14.600 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
57.361 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
239.234 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
295.023 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
2.800 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
369.777 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.180 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
664.179 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.400 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
8.367 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
1.000 μs (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
3.600 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
76.765 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
4.157 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
146.384 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.814 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
488.160 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
11.400 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
5.250 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
45.401 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
400.011 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
193.465 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
554.661 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
676.403 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
22.613 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.070 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.878 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.940 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
12.300 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
13.300 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
129.373 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
2.100 ns (5%) | |||
["qr", "S=10", "Matrix"] |
12.800 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
834.190 ns (5%) | |||
["qr", "S=11", "Matrix"] |
15.400 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.480 μs (5%) | |||
["qr", "S=12", "Matrix"] |
16.200 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.350 μs (5%) | |||
["qr", "S=13", "Matrix"] |
19.200 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.122 μs (5%) | |||
["qr", "S=14", "Matrix"] |
19.700 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
3.011 μs (5%) | |||
["qr", "S=15", "Matrix"] |
21.500 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
3.800 μs (5%) | |||
["qr", "S=16", "Matrix"] |
34.000 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
5.029 μs (5%) | |||
["qr", "S=17", "Matrix"] |
36.101 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
48.901 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
38.701 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
52.001 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
41.001 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
55.202 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.210 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
19.057 ns (5%) | |||
["qr", "S=20", "Matrix"] |
42.601 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
58.102 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
45.401 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
63.001 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
48.301 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
66.202 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.689 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
56.034 ns (5%) | |||
["qr", "S=4", "Matrix"] |
4.125 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
94.056 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.217 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
176.159 ns (5%) | |||
["qr", "S=6", "Matrix"] |
6.680 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
235.299 ns (5%) | |||
["qr", "S=7", "Matrix"] |
8.600 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
338.761 ns (5%) | |||
["qr", "S=8", "Matrix"] |
9.601 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
415.162 ns (5%) | |||
["qr", "S=9", "Matrix"] |
11.100 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
677.115 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1031-azure #33-Ubuntu SMP Thu Feb 6 22:26:13 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 43481 s 0 s 6350 s 45525 s 0 s
#2 2397 MHz 51029 s 0 s 3670 s 40571 s 0 s
Memory: 6.782741546630859 GB (3030.7109375 MB free)
Uptime: 972.0 sec
Load Avg: 1.052734375 1.15771484375 0.80615234375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Baseline result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 8:22
- Package commit: f33060
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
183.566 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
45.383 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
58.598 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
227.976 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
510.730 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
206.323 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
1.845 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.660 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
106.749 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
4.500 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
1.730 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
9.610 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
2.178 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
24.122 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
2.256 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
239.550 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
3.986 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.750 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
12.900 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
14.300 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
54.114 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
225.821 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
278.083 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
2.600 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
345.130 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.180 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
599.445 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.467 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
8.234 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
1.040 μs (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
3.425 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
71.475 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
4.100 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
142.582 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.757 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
464.964 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
11.200 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
4.833 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
45.402 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
399.916 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
206.546 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
528.437 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
670.160 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
22.613 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.310 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.667 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.820 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
12.000 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
13.301 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
132.522 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
1.900 ns (5%) | |||
["qr", "S=10", "Matrix"] |
12.900 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
838.000 ns (5%) | |||
["qr", "S=11", "Matrix"] |
14.500 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.170 μs (5%) | |||
["qr", "S=12", "Matrix"] |
16.300 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.350 μs (5%) | |||
["qr", "S=13", "Matrix"] |
19.300 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.156 μs (5%) | |||
["qr", "S=14", "Matrix"] |
21.701 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
2.811 μs (5%) | |||
["qr", "S=15", "Matrix"] |
23.100 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
3.713 μs (5%) | |||
["qr", "S=16", "Matrix"] |
33.901 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
4.914 μs (5%) | |||
["qr", "S=17", "Matrix"] |
36.901 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
50.302 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
38.801 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
52.502 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
41.001 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
55.502 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.230 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
19.157 ns (5%) | |||
["qr", "S=20", "Matrix"] |
43.501 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
59.102 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
45.801 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
62.802 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
47.701 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
66.602 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.700 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
55.931 ns (5%) | |||
["qr", "S=4", "Matrix"] |
4.125 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
94.057 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.600 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
176.757 ns (5%) | |||
["qr", "S=6", "Matrix"] |
7.180 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
254.598 ns (5%) | |||
["qr", "S=7", "Matrix"] |
8.634 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
337.330 ns (5%) | |||
["qr", "S=8", "Matrix"] |
9.700 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
412.136 ns (5%) | |||
["qr", "S=9", "Matrix"] |
12.100 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
673.298 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1031-azure #33-Ubuntu SMP Thu Feb 6 22:26:13 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 80399 s 0 s 7128 s 58808 s 0 s
#2 2397 MHz 66177 s 0 s 4508 s 75707 s 0 s
Memory: 6.782741546630859 GB (3000.26953125 MB free)
Uptime: 1486.0 sec
Load Avg: 1.06787109375 1.0751953125 0.93115234375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Runtime information
Runtime Info | |
---|---|
BLAS #threads | 2 |
BLAS.vendor() |
openblas64 |
Sys.CPU_THREADS |
2 |
lscpu
output:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping: 2
CPU MHz: 2397.225
BogoMIPS: 4794.45
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property | Value |
---|---|
Brand | Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz |
Vendor | :Intel |
Architecture | :Haswell |
Model | Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00 |
Cores | 2 physical cores, 2 logical cores (on executing CPU) |
No Hyperthreading detected | |
Clock Frequencies | Not supported by CPU |
Data Cache | Level 1:3 : (32, 256, 30720) kbytes |
64 byte cache line size | |
Address Size | 48 bits virtual, 44 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 |
Benchmark result
Judge result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmarks:
- Target: 27 Feb 2020 - 08:43
- Baseline: 27 Feb 2020 - 08:51
- Package commits:
- Target: 021e8c
- Baseline: f33060
- Julia commits:
- Target: 2d5741
- Baseline: 2d5741
- 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 |
---|---|---|
["matrix_ops", "*", "10", "Matrix"] |
0.90 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "*", "10", "SMatrix"] |
0.87 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "*", "20", "SMatrix"] |
1.16 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "01", "SMatrix"] |
0.94 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "\\", "02", "SMatrix"] |
0.88 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "\\", "03", "Matrix"] |
1.12 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "10", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "01", "Matrix"] |
0.95 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "det", "03", "SMatrix"] |
1.18 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "10", "SMatrix"] |
1.11 (5%) :x: | 1.00 (1%) |
["matrix_ops", "det", "20", "Matrix"] |
0.91 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "det", "20", "SMatrix"] |
0.94 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "exp", "02", "Matrix"] |
0.86 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "exp", "03", "SMatrix"] |
1.36 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "10", "SMatrix"] |
0.93 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "inv", "20", "Matrix"] |
1.07 (5%) :x: | 1.00 (1%) |
["qr", "S=1", "SMatrix"] |
0.88 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=13", "SMatrix"] |
0.94 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=14", "SMatrix"] |
1.05 (5%) :x: | 1.00 (1%) |
["qr", "S=15", "SMatrix"] |
1.75 (5%) :x: | 1.00 (1%) |
["qr", "S=18", "SMatrix"] |
1.09 (5%) :x: | 1.00 (1%) |
["qr", "S=20", "SMatrix"] |
1.10 (5%) :x: | 1.00 (1%) |
["qr", "S=6", "SMatrix"] |
0.91 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=7", "Matrix"] |
1.13 (5%) :x: | 1.00 (1%) |
["qr", "S=9", "SMatrix"] |
0.81 (5%) :white_check_mark: | 1.00 (1%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Target
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz:
speed user nice sys idle irq
#1 2294 MHz 58591 s 0 s 5008 s 24416 s 0 s
#2 2294 MHz 28397 s 0 s 7846 s 50252 s 0 s
Memory: 6.782737731933594 GB (3145.97265625 MB free)
Uptime: 925.0 sec
Load Avg: 1.14013671875 1.2119140625 0.88427734375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
Baseline
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz:
speed user nice sys idle irq
#1 2294 MHz 99408 s 0 s 5712 s 30504 s 0 s
#2 2294 MHz 35897 s 0 s 9171 s 89043 s 0 s
Memory: 6.782737731933594 GB (2881.6328125 MB free)
Uptime: 1403.0 sec
Load Avg: 1.1689453125 1.1826171875 1.00830078125
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
Target result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 8:43
- Package commit: 021e8c
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
156.692 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
37.966 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
45.602 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
234.753 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
487.245 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
193.281 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
1.800 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.620 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
92.380 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
1.600 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
1.590 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
5.700 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
2.067 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
19.358 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
1.711 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
185.246 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
4.200 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.510 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
12.400 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
13.900 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
45.198 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
189.247 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
236.164 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
2.600 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
293.561 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.140 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
681.287 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.033 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
7.700 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
806.944 ns (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
2.700 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
58.087 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
3.900 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
197.693 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.667 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
413.000 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
10.700 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
4.783 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
40.200 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
424.401 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
162.842 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
448.731 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
562.903 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
8.500 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.080 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.689 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.590 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
12.200 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
13.700 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
107.873 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
1.500 ns (5%) | |||
["qr", "S=10", "Matrix"] |
13.500 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
780.189 ns (5%) | |||
["qr", "S=11", "Matrix"] |
15.100 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.180 μs (5%) | |||
["qr", "S=12", "Matrix"] |
16.900 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.260 μs (5%) | |||
["qr", "S=13", "Matrix"] |
18.700 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.011 μs (5%) | |||
["qr", "S=14", "Matrix"] |
20.200 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
2.756 μs (5%) | |||
["qr", "S=15", "Matrix"] |
22.100 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
6.380 μs (5%) | |||
["qr", "S=16", "Matrix"] |
32.000 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
4.571 μs (5%) | |||
["qr", "S=17", "Matrix"] |
35.300 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
47.700 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
37.200 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
54.200 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
38.300 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
52.900 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.020 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
12.613 ns (5%) | |||
["qr", "S=20", "Matrix"] |
40.300 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
61.501 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
42.900 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
60.700 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
45.200 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
63.000 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.533 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
42.684 ns (5%) | |||
["qr", "S=4", "Matrix"] |
3.900 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
75.880 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.317 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
144.976 ns (5%) | |||
["qr", "S=6", "Matrix"] |
6.950 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
192.824 ns (5%) | |||
["qr", "S=7", "Matrix"] |
9.000 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
312.319 ns (5%) | |||
["qr", "S=8", "Matrix"] |
10.100 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
359.048 ns (5%) | |||
["qr", "S=9", "Matrix"] |
11.600 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
615.607 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz:
speed user nice sys idle irq
#1 2294 MHz 58591 s 0 s 5008 s 24416 s 0 s
#2 2294 MHz 28397 s 0 s 7846 s 50252 s 0 s
Memory: 6.782737731933594 GB (3145.97265625 MB free)
Uptime: 925.0 sec
Load Avg: 1.14013671875 1.2119140625 0.88427734375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
Baseline result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 8:51
- Package commit: f33060
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
157.451 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
38.369 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
46.512 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
233.410 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
542.857 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
222.530 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
1.722 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.400 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
91.233 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
1.700 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
1.560 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
6.500 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
1.844 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
19.559 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
1.778 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
187.630 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
3.957 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.540 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
12.600 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
13.600 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
47.826 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
195.084 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
237.263 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
2.200 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
295.455 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.140 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
616.374 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.733 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
8.200 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
833.333 ns (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
3.125 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
58.698 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
3.886 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
145.790 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.717 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
414.000 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
10.800 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
5.117 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
40.100 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
426.002 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
164.617 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
446.701 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
559.145 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
8.500 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.090 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.700 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.640 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
11.400 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
13.200 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
106.916 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
1.700 ns (5%) | |||
["qr", "S=10", "Matrix"] |
12.900 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
773.585 ns (5%) | |||
["qr", "S=11", "Matrix"] |
14.500 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.240 μs (5%) | |||
["qr", "S=12", "Matrix"] |
16.300 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.240 μs (5%) | |||
["qr", "S=13", "Matrix"] |
19.400 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.133 μs (5%) | |||
["qr", "S=14", "Matrix"] |
19.700 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
2.622 μs (5%) | |||
["qr", "S=15", "Matrix"] |
22.200 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
3.640 μs (5%) | |||
["qr", "S=16", "Matrix"] |
31.300 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
4.729 μs (5%) | |||
["qr", "S=17", "Matrix"] |
33.900 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
46.400 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
36.200 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
49.500 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
37.300 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
52.200 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.020 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
12.613 ns (5%) | |||
["qr", "S=20", "Matrix"] |
39.800 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
55.900 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
43.100 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
61.200 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
45.200 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
62.500 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.522 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
41.271 ns (5%) | |||
["qr", "S=4", "Matrix"] |
3.914 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
75.776 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.233 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
146.172 ns (5%) | |||
["qr", "S=6", "Matrix"] |
6.750 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
212.480 ns (5%) | |||
["qr", "S=7", "Matrix"] |
8.000 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
319.565 ns (5%) | |||
["qr", "S=8", "Matrix"] |
9.700 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
370.000 ns (5%) | |||
["qr", "S=9", "Matrix"] |
11.100 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
757.231 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz:
speed user nice sys idle irq
#1 2294 MHz 99408 s 0 s 5712 s 30504 s 0 s
#2 2294 MHz 35897 s 0 s 9171 s 89043 s 0 s
Memory: 6.782737731933594 GB (2881.6328125 MB free)
Uptime: 1403.0 sec
Load Avg: 1.1689453125 1.1826171875 1.00830078125
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, broadwell)
Runtime information
Runtime Info | |
---|---|
BLAS #threads | 2 |
BLAS.vendor() |
openblas64 |
Sys.CPU_THREADS |
2 |
lscpu
output:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 79
Model name: Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz
Stepping: 1
CPU MHz: 2294.687
BogoMIPS: 4589.37
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 51200K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm 3dnowprefetch invpcid_single pti fsgsbase bmi1 hle avx2 smep bmi2 erms invpcid rtm rdseed adx smap xsaveopt
Cpu Property | Value |
---|---|
Brand | Intel(R) Xeon(R) CPU E5-2673 v4 @ 2.30GHz |
Vendor | :Intel |
Architecture | :Broadwell |
Model | Family: 0x06, Model: 0x4f, Stepping: 0x01, Type: 0x00 |
Cores | 2 physical cores, 2 logical cores (on executing CPU) |
No Hyperthreading detected | |
Clock Frequencies | Not supported by CPU |
Data Cache | Level 1:3 : (32, 256, 51200) kbytes |
64 byte cache line size | |
Address Size | 48 bits virtual, 44 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 |
Benchmark result
Judge result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmarks:
- Target: 27 Feb 2020 - 10:55
- Baseline: 27 Feb 2020 - 11:03
- Package commits:
- Target: 30015a
- Baseline: f33060
- Julia commits:
- Target: 2d5741
- Baseline: 2d5741
- 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 |
---|---|---|
["matrix_ops", "*", "10", "SMatrix"] |
0.87 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "*", "20", "SMatrix"] |
0.81 (5%) :white_check_mark: | 1.00 (1%) |
["matrix_ops", "\\", "03", "Matrix"] |
1.05 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "04", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "\\", "20", "Matrix"] |
1.06 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "02", "Matrix"] |
1.08 (5%) :x: | 1.00 (1%) |
["matrix_ops", "exp", "10", "SMatrix"] |
1.09 (5%) :x: | 1.00 (1%) |
["matrix_ops", "inv", "20", "SMatrix"] |
0.89 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=1", "SMatrix"] |
0.82 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=15", "Matrix"] |
0.91 (5%) :white_check_mark: | 1.00 (1%) |
["qr", "S=16", "SMatrix"] |
0.89 (5%) :white_check_mark: | 1.00 (1%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Target
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 56184 s 0 s 4374 s 27523 s 0 s
#2 2397 MHz 38050 s 0 s 5427 s 45190 s 0 s
Memory: 6.782737731933594 GB (3146.0234375 MB free)
Uptime: 902.0 sec
Load Avg: 1.3134765625 1.23193359375 0.828125
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Baseline
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 71130 s 0 s 5249 s 62625 s 0 s
#2 2397 MHz 75070 s 0 s 6111 s 58327 s 0 s
Memory: 6.782737731933594 GB (2835.1796875 MB free)
Uptime: 1414.0 sec
Load Avg: 1.06298828125 1.0751953125 0.9375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Target result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 10:55
- Package commit: 30015a
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
211.895 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
52.787 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
61.940 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
245.860 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
501.080 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
216.774 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
1.822 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.460 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
122.664 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
5.200 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
2.000 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
10.410 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
2.133 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
25.930 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
2.289 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
257.189 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
4.443 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.890 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
13.200 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
15.400 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
61.751 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
259.732 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
320.340 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
3.000 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
400.500 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.180 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
666.680 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.425 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
8.300 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
1.070 μs (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
3.713 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
76.733 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
4.129 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
152.395 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.750 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
513.380 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
11.500 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
5.734 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
42.901 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
411.410 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
222.872 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
610.129 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
788.605 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
26.004 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.150 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.856 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.940 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
12.001 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
13.201 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
148.112 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
1.800 ns (5%) | |||
["qr", "S=10", "Matrix"] |
13.700 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
889.604 ns (5%) | |||
["qr", "S=11", "Matrix"] |
15.400 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.280 μs (5%) | |||
["qr", "S=12", "Matrix"] |
17.300 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.460 μs (5%) | |||
["qr", "S=13", "Matrix"] |
19.000 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.500 μs (5%) | |||
["qr", "S=14", "Matrix"] |
21.000 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
3.038 μs (5%) | |||
["qr", "S=15", "Matrix"] |
23.400 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
4.037 μs (5%) | |||
["qr", "S=16", "Matrix"] |
33.401 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
5.129 μs (5%) | |||
["qr", "S=17", "Matrix"] |
36.301 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
49.701 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
38.601 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
53.401 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
40.401 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
55.301 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.390 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
20.461 ns (5%) | |||
["qr", "S=20", "Matrix"] |
43.001 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
60.002 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
45.601 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
63.201 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
47.801 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
65.001 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.700 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
60.164 ns (5%) | |||
["qr", "S=4", "Matrix"] |
4.186 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
101.866 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.567 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
190.337 ns (5%) | |||
["qr", "S=6", "Matrix"] |
7.175 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
253.729 ns (5%) | |||
["qr", "S=7", "Matrix"] |
8.567 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
368.005 ns (5%) | |||
["qr", "S=8", "Matrix"] |
10.300 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
438.389 ns (5%) | |||
["qr", "S=9", "Matrix"] |
11.900 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
707.056 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 56184 s 0 s 4374 s 27523 s 0 s
#2 2397 MHz 38050 s 0 s 5427 s 45190 s 0 s
Memory: 6.782737731933594 GB (3146.0234375 MB free)
Uptime: 902.0 sec
Load Avg: 1.3134765625 1.23193359375 0.828125
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Baseline result
Benchmark Report for /home/runner/work/StaticArrays.jl/StaticArrays.jl
Job Properties
- Time of benchmark: 27 Feb 2020 - 11:3
- Package commit: f33060
- Julia commit: 2d5741
- 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 |
---|---|---|---|---|
["matrix_ops", "*", "01", "Matrix"] |
210.816 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "*", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "02", "Matrix"] |
51.470 ns (5%) | 112 bytes (1%) | 1 | |
["matrix_ops", "*", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "03", "Matrix"] |
63.063 ns (5%) | 160 bytes (1%) | 1 | |
["matrix_ops", "*", "03", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "04", "Matrix"] |
244.567 ns (5%) | 208 bytes (1%) | 1 | |
["matrix_ops", "*", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "*", "10", "Matrix"] |
500.551 ns (5%) | 896 bytes (1%) | 1 | |
["matrix_ops", "*", "10", "SMatrix"] |
248.485 ns (5%) | |||
["matrix_ops", "*", "20", "Matrix"] |
1.889 μs (5%) | 3.25 KiB (1%) | 1 | |
["matrix_ops", "*", "20", "SMatrix"] |
1.810 μs (5%) | |||
["matrix_ops", "\\", "01", "Matrix"] |
123.767 ns (5%) | 208 bytes (1%) | 3 | |
["matrix_ops", "\\", "01", "SMatrix"] |
5.200 ns (5%) | |||
["matrix_ops", "\\", "02", "Matrix"] |
1.956 μs (5%) | 352 bytes (1%) | 4 | |
["matrix_ops", "\\", "02", "SMatrix"] |
10.410 ns (5%) | |||
["matrix_ops", "\\", "03", "Matrix"] |
2.022 μs (5%) | 464 bytes (1%) | 4 | |
["matrix_ops", "\\", "03", "SMatrix"] |
25.930 ns (5%) | |||
["matrix_ops", "\\", "04", "Matrix"] |
2.156 μs (5%) | 560 bytes (1%) | 4 | |
["matrix_ops", "\\", "04", "SMatrix"] |
257.192 ns (5%) | |||
["matrix_ops", "\\", "10", "Matrix"] |
4.343 μs (5%) | 1.94 KiB (1%) | 4 | |
["matrix_ops", "\\", "10", "SMatrix"] |
1.860 μs (5%) | |||
["matrix_ops", "\\", "20", "Matrix"] |
12.400 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "\\", "20", "SMatrix"] |
15.501 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "det", "01", "Matrix"] |
62.260 ns (5%) | 112 bytes (1%) | 2 | |
["matrix_ops", "det", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "02", "Matrix"] |
260.008 ns (5%) | 240 bytes (1%) | 3 | |
["matrix_ops", "det", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "03", "Matrix"] |
320.755 ns (5%) | 304 bytes (1%) | 3 | |
["matrix_ops", "det", "03", "SMatrix"] |
3.000 ns (5%) | |||
["matrix_ops", "det", "04", "Matrix"] |
399.025 ns (5%) | 352 bytes (1%) | 3 | |
["matrix_ops", "det", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "det", "10", "Matrix"] |
1.180 μs (5%) | 1.06 KiB (1%) | 3 | |
["matrix_ops", "det", "10", "SMatrix"] |
673.876 ns (5%) | |||
["matrix_ops", "det", "20", "Matrix"] |
7.425 μs (5%) | 3.52 KiB (1%) | 3 | |
["matrix_ops", "det", "20", "SMatrix"] |
8.000 μs (5%) | 6.77 KiB (1%) | 4 | |
["matrix_ops", "exp", "01", "Matrix"] |
1.070 μs (5%) | 1.69 KiB (1%) | 20 | |
["matrix_ops", "exp", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "exp", "02", "Matrix"] |
3.425 μs (5%) | 3.52 KiB (1%) | 32 | |
["matrix_ops", "exp", "02", "SMatrix"] |
76.734 ns (5%) | |||
["matrix_ops", "exp", "03", "Matrix"] |
4.214 μs (5%) | 4.91 KiB (1%) | 32 | |
["matrix_ops", "exp", "03", "SMatrix"] |
153.625 ns (5%) | |||
["matrix_ops", "exp", "04", "Matrix"] |
4.700 μs (5%) | 3.25 KiB (1%) | 17 | |
["matrix_ops", "exp", "04", "SMatrix"] |
502.690 ns (5%) | |||
["matrix_ops", "exp", "10", "Matrix"] |
11.100 μs (5%) | 14.50 KiB (1%) | 19 | |
["matrix_ops", "exp", "10", "SMatrix"] |
5.267 μs (5%) | |||
["matrix_ops", "exp", "20", "Matrix"] |
41.102 μs (5%) | 55.91 KiB (1%) | 20 | |
["matrix_ops", "exp", "20", "SMatrix"] |
400.615 μs (5%) | 10.02 KiB (1%) | 5 | |
["matrix_ops", "inv", "01", "Matrix"] |
220.742 ns (5%) | 96 bytes (1%) | 1 | |
["matrix_ops", "inv", "01", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "02", "Matrix"] |
608.444 ns (5%) | 1.39 KiB (1%) | 5 | |
["matrix_ops", "inv", "02", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "03", "Matrix"] |
775.465 ns (5%) | 1.98 KiB (1%) | 5 | |
["matrix_ops", "inv", "03", "SMatrix"] |
25.904 ns (5%) | |||
["matrix_ops", "inv", "04", "Matrix"] |
1.120 μs (5%) | 2.50 KiB (1%) | 5 | |
["matrix_ops", "inv", "04", "SMatrix"] |
0.001 ns (5%) | |||
["matrix_ops", "inv", "10", "Matrix"] |
2.789 μs (5%) | 6.22 KiB (1%) | 5 | |
["matrix_ops", "inv", "10", "SMatrix"] |
1.920 μs (5%) | |||
["matrix_ops", "inv", "20", "Matrix"] |
12.500 μs (5%) | 13.67 KiB (1%) | 5 | |
["matrix_ops", "inv", "20", "SMatrix"] |
14.800 μs (5%) | 16.92 KiB (1%) | 6 | |
["qr", "S=1", "Matrix"] |
144.854 ns (5%) | 320 bytes (1%) | 4 | |
["qr", "S=1", "SMatrix"] |
2.200 ns (5%) | |||
["qr", "S=10", "Matrix"] |
13.700 μs (5%) | 2.66 KiB (1%) | 4 | |
["qr", "S=10", "SMatrix"] |
897.938 ns (5%) | |||
["qr", "S=11", "Matrix"] |
15.301 μs (5%) | 3.22 KiB (1%) | 4 | |
["qr", "S=11", "SMatrix"] |
1.290 μs (5%) | |||
["qr", "S=12", "Matrix"] |
17.300 μs (5%) | 3.69 KiB (1%) | 4 | |
["qr", "S=12", "SMatrix"] |
1.450 μs (5%) | |||
["qr", "S=13", "Matrix"] |
19.600 μs (5%) | 4.39 KiB (1%) | 4 | |
["qr", "S=13", "SMatrix"] |
2.433 μs (5%) | |||
["qr", "S=14", "Matrix"] |
20.901 μs (5%) | 5.33 KiB (1%) | 4 | |
["qr", "S=14", "SMatrix"] |
2.975 μs (5%) | |||
["qr", "S=15", "Matrix"] |
25.700 μs (5%) | 5.98 KiB (1%) | 4 | |
["qr", "S=15", "SMatrix"] |
3.988 μs (5%) | |||
["qr", "S=16", "Matrix"] |
33.701 μs (5%) | 6.41 KiB (1%) | 4 | |
["qr", "S=16", "SMatrix"] |
5.772 μs (5%) | |||
["qr", "S=17", "Matrix"] |
36.101 μs (5%) | 7.34 KiB (1%) | 4 | |
["qr", "S=17", "SMatrix"] |
49.102 μs (5%) | 19.56 KiB (1%) | 10 | |
["qr", "S=18", "Matrix"] |
38.202 μs (5%) | 8.09 KiB (1%) | 4 | |
["qr", "S=18", "SMatrix"] |
52.801 μs (5%) | 21.56 KiB (1%) | 10 | |
["qr", "S=19", "Matrix"] |
40.301 μs (5%) | 9.03 KiB (1%) | 4 | |
["qr", "S=19", "SMatrix"] |
55.302 μs (5%) | 24.06 KiB (1%) | 10 | |
["qr", "S=2", "Matrix"] |
1.400 μs (5%) | 368 bytes (1%) | 4 | |
["qr", "S=2", "SMatrix"] |
20.461 ns (5%) | |||
["qr", "S=20", "Matrix"] |
42.101 μs (5%) | 9.78 KiB (1%) | 4 | |
["qr", "S=20", "SMatrix"] |
58.302 μs (5%) | 26.06 KiB (1%) | 10 | |
["qr", "S=21", "Matrix"] |
44.802 μs (5%) | 10.91 KiB (1%) | 4 | |
["qr", "S=21", "SMatrix"] |
61.602 μs (5%) | 29.06 KiB (1%) | 10 | |
["qr", "S=22", "Matrix"] |
47.402 μs (5%) | 11.84 KiB (1%) | 4 | |
["qr", "S=22", "SMatrix"] |
65.402 μs (5%) | 31.56 KiB (1%) | 10 | |
["qr", "S=3", "Matrix"] |
2.689 μs (5%) | 512 bytes (1%) | 4 | |
["qr", "S=3", "SMatrix"] |
60.062 ns (5%) | |||
["qr", "S=4", "Matrix"] |
4.200 μs (5%) | 656 bytes (1%) | 4 | |
["qr", "S=4", "SMatrix"] |
100.936 ns (5%) | |||
["qr", "S=5", "Matrix"] |
5.550 μs (5%) | 896 bytes (1%) | 4 | |
["qr", "S=5", "SMatrix"] |
194.838 ns (5%) | |||
["qr", "S=6", "Matrix"] |
7.175 μs (5%) | 1.11 KiB (1%) | 4 | |
["qr", "S=6", "SMatrix"] |
252.133 ns (5%) | |||
["qr", "S=7", "Matrix"] |
8.567 μs (5%) | 1.48 KiB (1%) | 4 | |
["qr", "S=7", "SMatrix"] |
377.510 ns (5%) | |||
["qr", "S=8", "Matrix"] |
10.300 μs (5%) | 1.86 KiB (1%) | 4 | |
["qr", "S=8", "SMatrix"] |
433.848 ns (5%) | |||
["qr", "S=9", "Matrix"] |
11.900 μs (5%) | 2.19 KiB (1%) | 4 | |
["qr", "S=9", "SMatrix"] |
716.218 ns (5%) |
Benchmark Group List
Here's a list of all the benchmark groups executed by this job:
-
["matrix_ops", "*", "01"]
-
["matrix_ops", "*", "02"]
-
["matrix_ops", "*", "03"]
-
["matrix_ops", "*", "04"]
-
["matrix_ops", "*", "10"]
-
["matrix_ops", "*", "20"]
-
["matrix_ops", "\\", "01"]
-
["matrix_ops", "\\", "02"]
-
["matrix_ops", "\\", "03"]
-
["matrix_ops", "\\", "04"]
-
["matrix_ops", "\\", "10"]
-
["matrix_ops", "\\", "20"]
-
["matrix_ops", "det", "01"]
-
["matrix_ops", "det", "02"]
-
["matrix_ops", "det", "03"]
-
["matrix_ops", "det", "04"]
-
["matrix_ops", "det", "10"]
-
["matrix_ops", "det", "20"]
-
["matrix_ops", "exp", "01"]
-
["matrix_ops", "exp", "02"]
-
["matrix_ops", "exp", "03"]
-
["matrix_ops", "exp", "04"]
-
["matrix_ops", "exp", "10"]
-
["matrix_ops", "exp", "20"]
-
["matrix_ops", "inv", "01"]
-
["matrix_ops", "inv", "02"]
-
["matrix_ops", "inv", "03"]
-
["matrix_ops", "inv", "04"]
-
["matrix_ops", "inv", "10"]
-
["matrix_ops", "inv", "20"]
-
["qr", "S=1"]
-
["qr", "S=10"]
-
["qr", "S=11"]
-
["qr", "S=12"]
-
["qr", "S=13"]
-
["qr", "S=14"]
-
["qr", "S=15"]
-
["qr", "S=16"]
-
["qr", "S=17"]
-
["qr", "S=18"]
-
["qr", "S=19"]
-
["qr", "S=2"]
-
["qr", "S=20"]
-
["qr", "S=21"]
-
["qr", "S=22"]
-
["qr", "S=3"]
-
["qr", "S=4"]
-
["qr", "S=5"]
-
["qr", "S=6"]
-
["qr", "S=7"]
-
["qr", "S=8"]
-
["qr", "S=9"]
Julia versioninfo
Julia Version 1.3.1
Commit 2d5741174c (2019-12-30 21:36 UTC)
Platform Info:
OS: Linux (x86_64-pc-linux-gnu)
Ubuntu 18.04.4 LTS
uname: Linux 5.0.0-1032-azure #34-Ubuntu SMP Mon Feb 10 19:37:25 UTC 2020 x86_64 x86_64
CPU: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz:
speed user nice sys idle irq
#1 2397 MHz 71130 s 0 s 5249 s 62625 s 0 s
#2 2397 MHz 75070 s 0 s 6111 s 58327 s 0 s
Memory: 6.782737731933594 GB (2835.1796875 MB free)
Uptime: 1414.0 sec
Load Avg: 1.06298828125 1.0751953125 0.9375
WORD_SIZE: 64
LIBM: libopenlibm
LLVM: libLLVM-6.0.1 (ORCJIT, haswell)
Runtime information
Runtime Info | |
---|---|
BLAS #threads | 2 |
BLAS.vendor() |
openblas64 |
Sys.CPU_THREADS |
2 |
lscpu
output:
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Byte Order: Little Endian
CPU(s): 2
On-line CPU(s) list: 0,1
Thread(s) per core: 1
Core(s) per socket: 2
Socket(s): 1
NUMA node(s): 1
Vendor ID: GenuineIntel
CPU family: 6
Model: 63
Model name: Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz
Stepping: 2
CPU MHz: 2397.219
BogoMIPS: 4794.43
Hypervisor vendor: Microsoft
Virtualization type: full
L1d cache: 32K
L1i cache: 32K
L2 cache: 256K
L3 cache: 30720K
NUMA node0 CPU(s): 0,1
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss ht syscall nx pdpe1gb rdtscp lm constant_tsc rep_good nopl xtopology cpuid pni pclmulqdq ssse3 fma cx16 pcid sse4_1 sse4_2 movbe popcnt aes xsave avx f16c rdrand hypervisor lahf_lm abm invpcid_single pti fsgsbase bmi1 avx2 smep bmi2 erms invpcid xsaveopt md_clear
Cpu Property | Value |
---|---|
Brand | Intel(R) Xeon(R) CPU E5-2673 v3 @ 2.40GHz |
Vendor | :Intel |
Architecture | :Haswell |
Model | Family: 0x06, Model: 0x3f, Stepping: 0x02, Type: 0x00 |
Cores | 2 physical cores, 2 logical cores (on executing CPU) |
No Hyperthreading detected | |
Clock Frequencies | Not supported by CPU |
Data Cache | Level 1:3 : (32, 256, 30720) kbytes |
64 byte cache line size | |
Address Size | 48 bits virtual, 44 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 |
Coverage remained the same at 82.459% when pulling ddd2fb6fa365fab41566ca2bc498a0e6ea0ebdea on cjf/setindex-MArray into f330604aa1b5fc0937dd15c7ebb49acabd7674e9 on master.
For the "fail hard" option, wouldn't it be better to disallow even creating MArray
s with non-isbits elements? If so, I think defining setindex!
here makes sense if it is allowed to construct in the first place.
Good for aspiring performance hackers
Shouldn't people who wants to optimize the hell out of their code use SArray
in the first place? Gearing towards user-friendliness in MArray
API makes sense to me.
(@KristofferC If the benchmark comment from the bot is too noisy, we can turn off the comment. See #741)
Can we use
@GC.preserve
on bothv
andval
and use something like the isbitstype path? We basically want to copy a pointer... so long as the garbage collection is conservative enough this should be safe, no?
Well I kind of think not? The storage Tuple
is meant to be immutable so if we go around overwriting elements doesn't that violate Julia semantics? Consequences could be the compiler proving something const in inference and making decisions based on that which are violated at runtime.
Related - I'm not exactly sure why we get away with apparently the exact same thing for bits types! (I guess the inlining of "immutable" storage into the mutable parent structure has some weird semantic consequences.)
Or is there something about the generational GC that makes this more complex than I would guess?
Yes! The GC is generational. Objects are split into old and new generations. In order to collect the new generation independently, it needs to specially track any old objects which point to new ones. This means you need to inform the GC whenever you set a pointer field (so it can update the internal "remset" if the object is old and the child pointed to is new). This is the purpose of the obscurely named runtime function jl_gc_wb()
. So in principle we could write the pointer and ccall jl_gc_wb
or equivalent. It might be fun to try but I'm not sure this can make sense for tuples which are meant to be immutable :-)
For the "fail hard" option, wouldn't it be better to disallow even creating
MArray
s with non-isbits elements? If so, I think definingsetindex!
here makes sense if it is allowed to construct in the first place.
You might be right about that. We currently have another bug where initializing with undef
basically makes a non-isbits MArray
unusable.
So perhaps this PR would have better been an issue: "What to do about MArray with non-isbits elements?"
Good for aspiring performance hackers
Shouldn't people who wants to optimize the hell out of their code use
SArray
in the first place? Gearing towards user-friendliness inMArray
API makes sense to me.
Temporary MArray
s can be quite good for in-place algorithms; very efficient and simple to use, and the compiler seems quite willing to reason about them effectively. Especially for some of the linear algebra algorithms, people have to go to extreme lengths to be able to use the immutable versions.
When I say "extreme lengths" I guess it's a matter of perspective: I find imperative in-place numerical linear algebra more natural to reason about compared to the very functional style that SArray demands.
(@KristofferC If the benchmark comment from the bot is too noisy, we can turn off the comment. See #741)
Yes I think it's a bit noisy (especially when I do stupid things like breaking the tests, as I did here :grimacing:) I've merged that now to reduce notification volume.
When I say "extreme lengths" I guess it's a matter of perspective
I guess this is what I meant to say by "optimize the hell out." I wanted to mention that MArray
lies somewhere between SArray
and Array
in terms of ease-of-use spectrum and (maybe "user-friendliness" wasn't the best word for it). Since SArray
covers the extreme portion of this spectrum, I thought accepting more generic use with MArray
seems to be a good balance. That is to say, if you have a super performance-sensitive code and you want to avoid bitten by non-isbits MArray
at all cost, you still can use SArray
.
By the way, can the unsafe_store!
path support union of isbits types like Union{Float64,Missing}
?
By the way, can the
unsafe_store!
path support union of isbits types likeUnion{Float64,Missing}
?
Excellent question, I checked the data layout and I think the answer is a conclusive "no for now" because tuples-of-unions are not inlined. Indeed I think the covariance of tuples makes this impossible right now because a data storage NTuple{2,Union{Missing,Float64}}
is not a concrete type?
Possibly it would help to have systematic treatment of small union selector bits along the lines of https://github.com/JuliaLang/julia/issues/33120 but I guess we would still need a new builtin InvariantTuple
to make this work.
I checked the data layout and I think the answer is a conclusive "no for now" because tuples-of-unions are not inlined
Actually very recently we have https://github.com/JuliaLang/julia/pull/34126 — if that were to merge we might actually be in a position to fix this without a huge performance hit. Though we'd still need to figure out how to maintain correct GC invariants.
I guess we would still need a new builtin
InvariantTuple
to make this work
Can we just insert a "value wrapper" to get an invariant tuple type?
struct InvariantValue{T} # "value wrapper"
value::T
end
struct InvariantTuple{T <: Tuple{Vararg{InvariantValue}}}
values::T
end
Base.getindex(t::InvariantTuple, i::Integer) = t.values[i].value
# Some helper functions
(::Base.Colon)(x::S, ::Type{T}) where {T, S <: T} = InvariantValue{T}(x)
invariant(args::InvariantValue...) = InvariantTuple(args)
t1 = invariant(1:Union{Missing,Int}, 2.0:Union{Missing,Float64})
t2 = invariant(1:Union{Missing,Int}, missing:Union{Missing,Float64})
typeof(t1) === typeof(t2)
(Alternatively, we can also create a "typed linked list." Though I guess this is much more compiler-friendly.)
I guess what we need here is actually
struct InvariantNTuple{N,T}
values::NTuple{N,InvariantValue{T}}
end
which may be more compiler friendly (naively thinking, fewer type parameters sounds good)?
Can someone comment on the status of this PR? I find myself in the "people wanting to write generic code using MArray" group described above, particularly to keep open the option of using BigFloats.
Revisit if https://github.com/JuliaLang/julia/pull/34126 is merged
It merged, so it should be fine now?