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 |
---|---|---|
["basic-operations", "Float32 * SymmetricTensor{2, 3, Float32}"] |
0.88 (5%) ✅ | 1.00 (1%) |
["basic-operations", "Float32 * Tensor{2, 3, Float32}"] |
0.86 (5%) ✅ | 1.00 (1%) |
["basic-operations", "Float32 * Vec{3, Float32}"] |
0.86 (5%) ✅ | 1.00 (1%) |
["basic-operations", "Float64 * Tensor{2, 3, Float64}"] |
1.14 (5%) ❌ | 1.00 (1%) |
["basic-operations", "Float64 * Tensor{4, 3, Float64}"] |
0.93 (5%) ✅ | 1.00 (1%) |
["basic-operations", "SymmetricTensor{4, 3, Float32} - SymmetricTensor{4, 3, Float32}"] |
1.11 (5%) ❌ | 1.00 (1%) |
["basic-operations", "SymmetricTensor{4, 3, Float64} * Float64"] |
1.13 (5%) ❌ | 1.00 (1%) |
["basic-operations", "SymmetricTensor{4, 3, Float64} + SymmetricTensor{4, 3, Float64}"] |
1.50 (5%) ❌ | 1.00 (1%) |
["basic-operations", "SymmetricTensor{4, 3, Float64} - SymmetricTensor{4, 3, Float64}"] |
1.51 (5%) ❌ | 1.00 (1%) |
["basic-operations", "Tensor{4, 3, Float32} * Float32"] |
0.94 (5%) ✅ | 1.00 (1%) |
["basic-operations", "Tensor{4, 3, Float64} * Float64"] |
0.93 (5%) ✅ | 1.00 (1%) |
["basic-operations", "Vec{3, Float64} + Vec{3, Float64}"] |
0.88 (5%) ✅ | 1.00 (1%) |
["constructors", "SymmetricTensor{2, 3}(A::Array)"] |
0.11 (5%) ✅ | 1.00 (1%) |
["constructors", "SymmetricTensor{2, 3}(f::Function)"] |
0.01 (5%) ✅ | 1.00 (1%) |
["constructors", "SymmetricTensor{4, 3}(A::Array)"] |
0.11 (5%) ✅ | 1.00 (1%) |
["constructors", "SymmetricTensor{4, 3}(f::Function)"] |
0.01 (5%) ✅ | 1.00 (1%) |
["constructors", "Tensor{1, 3}(A::Array)"] |
0.11 (5%) ✅ | 1.00 (1%) |
["constructors", "Tensor{2, 3}(A::Array)"] |
0.12 (5%) ✅ | 1.00 (1%) |
["constructors", "Tensor{2, 3}(f::Function)"] |
0.01 (5%) ✅ | 1.00 (1%) |
["constructors", "Tensor{4, 3}(A::Array)"] |
0.11 (5%) ✅ | 1.00 (1%) |
["constructors", "Tensor{4, 3}(f::Function)"] |
0.02 (5%) ✅ | 1.00 (1%) |
["constructors", "Vec{3}(f::Function)"] |
0.01 (5%) ✅ | 1.00 (1%) |
["constructors", "one(SymmetricTensor{4, 3, Float32})"] |
1.19 (5%) ❌ | 1.00 (1%) |
["constructors", "one(SymmetricTensor{4, 3, Float64})"] |
0.74 (5%) ✅ | 1.00 (1%) |
["constructors", "one(Tensor{2, 3, Float64})"] |
0.80 (5%) ✅ | 1.00 (1%) |
["constructors", "ones(SymmetricTensor{2, 3, Float32})"] |
1.15 (5%) ❌ | 1.00 (1%) |
["constructors", "rand(SymmetricTensor{2, 3, Float32})"] |
0.95 (5%) ✅ | 1.00 (1%) |
["constructors", "rand(SymmetricTensor{4, 3, Float32})"] |
1.09 (5%) ❌ | 1.00 (1%) |
["constructors", "rand(SymmetricTensor{4, 3, Float64})"] |
0.90 (5%) ✅ | 1.00 (1%) |
["constructors", "rand(Tensor{4, 3, Float64})"] |
0.90 (5%) ✅ | 1.00 (1%) |
["constructors", "rand(Vec{3, Float64})"] |
0.90 (5%) ✅ | 1.00 (1%) |
["constructors", "zero(SymmetricTensor{4, 3, Float64})"] |
0.90 (5%) ✅ | 1.00 (1%) |
["constructors", "zero(Tensor{2, 3, Float64})"] |
0.86 (5%) ✅ | 1.00 (1%) |
["constructors", "zero(Tensor{4, 3, Float32})"] |
1.05 (5%) ❌ | 1.00 (1%) |
["dcontract", "SymmetricTensor{2, 3, Float32} ⊡ SymmetricTensor{2, 3, Float32}"] |
0.94 (5%) ✅ | 1.00 (1%) |
["dcontract", "Tensor{4, 3, Float32} ⊡ Tensor{4, 3, Float32}"] |
1.28 (5%) ❌ | 1.00 (1%) |
["dcontract", "Tensor{4, 3, Float64} ⊡ Tensor{2, 3, Float64}"] |
0.74 (5%) ✅ | 1.00 (1%) |
["dcontract", "Tensor{4, 3, Float64} ⊡ Tensor{4, 3, Float64}"] |
0.93 (5%) ✅ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, Float32} ⋅ SymmetricTensor{2, 3, Float32}"] |
1.47 (5%) ❌ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, Float32} ⋅ Vec{3, Float32}"] |
1.39 (5%) ❌ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, Float64} ⋅ SymmetricTensor{2, 3, Float64}"] |
1.44 (5%) ❌ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, Float64} ⋅ Vec{3, Float64}"] |
1.12 (5%) ❌ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}} ⋅ SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}}"] |
0.67 (5%) ✅ | 1.00 (1%) |
["dot", "SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}} ⋅ Vec{3, ForwardDiff.Dual{4,Float64}}"] |
0.60 (5%) ✅ | 1.00 (1%) |
["dot", "Tensor{2, 3, ForwardDiff.Dual{4,Float64}} ⋅ Tensor{2, 3, ForwardDiff.Dual{4,Float64}}"] |
0.68 (5%) ✅ | 1.00 (1%) |
["dot", "Tensor{2, 3, ForwardDiff.Dual{4,Float64}} ⋅ Vec{3, ForwardDiff.Dual{4,Float64}}"] |
0.59 (5%) ✅ | 1.00 (1%) |
["dot", "Vec{3, Float32} ⋅ SymmetricTensor{2, 3, Float32}"] |
1.29 (5%) ❌ | 1.00 (1%) |
["dot", "Vec{3, Float32} ⋅ Tensor{2, 3, Float32}"] |
1.17 (5%) ❌ | 1.00 (1%) |
["dot", "Vec{3, Float64} ⋅ SymmetricTensor{2, 3, Float64}"] |
1.25 (5%) ❌ | 1.00 (1%) |
["dot", "Vec{3, Float64} ⋅ Tensor{2, 3, Float64}"] |
1.20 (5%) ❌ | 1.00 (1%) |
["dot", "Vec{3, ForwardDiff.Dual{4,Float64}} ⋅ SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}}"] |
0.61 (5%) ✅ | 1.00 (1%) |
["dot", "Vec{3, ForwardDiff.Dual{4,Float64}} ⋅ Tensor{2, 3, ForwardDiff.Dual{4,Float64}}"] |
0.59 (5%) ✅ | 1.00 (1%) |
["dot", "Vec{3, ForwardDiff.Dual{4,Float64}} ⋅ Vec{3, ForwardDiff.Dual{4,Float64}}"] |
0.51 (5%) ✅ | 1.00 (1%) |
["gradient", "∇S(SymmetricTensor{2, 3, Float32})"] |
2.71 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇S(SymmetricTensor{2, 3, Float64})"] |
3.06 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇S(Tensor{2, 3, Float32})"] |
2.70 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇S(Tensor{2, 3, Float64})"] |
3.07 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇Ψ(SymmetricTensor{2, 3, Float32})"] |
5.81 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇Ψ(SymmetricTensor{2, 3, Float64})"] |
8.08 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇Ψ(Tensor{2, 3, Float32})"] |
5.80 (5%) ❌ | Inf (1%) ❌ |
["gradient", "∇Ψ(Tensor{2, 3, Float64})"] |
8.03 (5%) ❌ | Inf (1%) ❌ |
["hessian", "ΔΨ(SymmetricTensor{2, 3, Float32})"] |
4.39 (5%) ❌ | Inf (1%) ❌ |
["hessian", "ΔΨ(SymmetricTensor{2, 3, Float64})"] |
3.85 (5%) ❌ | Inf (1%) ❌ |
["hessian", "ΔΨ(Tensor{2, 3, Float32})"] |
4.09 (5%) ❌ | Inf (1%) ❌ |
["hessian", "ΔΨ(Tensor{2, 3, Float64})"] |
3.78 (5%) ❌ | Inf (1%) ❌ |
["other", "Tensors.skew(SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
1.85 (5%) ❌ | 1.00 (1%) |
["other", "Tensors.skew(Tensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
0.93 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{2, 3, Float32})"] |
0.84 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{2, 3, Float64})"] |
1.32 (5%) ❌ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
0.63 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{4, 3, Float32})"] |
0.66 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{4, 3, Float64})"] |
0.25 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.symmetric(SymmetricTensor{4, 3, ForwardDiff.Dual{4,Float64}})"] |
1.69 (5%) ❌ | 1.00 (1%) |
["other", "Tensors.symmetric(Tensor{4, 3, Float32})"] |
0.94 (5%) ✅ | 1.00 (1%) |
["other", "Tensors.vol(Tensor{2, 3, Float32})"] |
1.07 (5%) ❌ | 1.00 (1%) |
["other", "det(Tensor{2, 3, Float32})"] |
1.05 (5%) ❌ | 1.00 (1%) |
["other", "mean(SymmetricTensor{2, 3, Float64})"] |
1.05 (5%) ❌ | 1.00 (1%) |
["other", "norm(SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
0.88 (5%) ✅ | 1.00 (1%) |
["other", "norm(SymmetricTensor{4, 3, ForwardDiff.Dual{4,Float64}})"] |
0.91 (5%) ✅ | 1.00 (1%) |
["other", "norm(Tensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
0.90 (5%) ✅ | 1.00 (1%) |
["other", "trace(SymmetricTensor{2, 3, Float64})"] |
1.19 (5%) ❌ | 1.00 (1%) |
["other", "trace(Tensor{2, 3, Float32})"] |
1.06 (5%) ❌ | 1.00 (1%) |
["other", "trace(Tensor{2, 3, Float64})"] |
0.82 (5%) ✅ | 1.00 (1%) |
["other", "transpose(SymmetricTensor{2, 3, Float64})"] |
1.29 (5%) ❌ | 1.00 (1%) |
["other", "transpose(SymmetricTensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
0.63 (5%) ✅ | 1.00 (1%) |
["other", "transpose(Tensor{2, 3, ForwardDiff.Dual{4,Float64}})"] |
1.42 (5%) ❌ | 1.00 (1%) |
["otimes", "SymmetricTensor{2, 3, Float32} ⊗ SymmetricTensor{2, 3, Float32}"] |
0.37 (5%) ✅ | 1.00 (1%) |
["promotion", "SymmetricTensor{2, 3, Float32} -> SymmetricTensor{2, 3, Float64}"] |
0.30 (5%) ✅ | 1.00 (1%) |
["promotion", "SymmetricTensor{2, 3} -> Tensor{2, 3}"] |
0.15 (5%) ✅ | 1.00 (1%) |
["promotion", "SymmetricTensor{4, 3, Float32} -> SymmetricTensor{4, 3, Float64}"] |
0.28 (5%) ✅ | 1.00 (1%) |
["promotion", "SymmetricTensor{4, 3} -> Tensor{4, 3}"] |
0.57 (5%) ✅ | 1.00 (1%) |
["promotion", "Tensor{2, 3, Float32} -> Tensor{2, 3, Float64}"] |
0.18 (5%) ✅ | 1.00 (1%) |
["promotion", "Tensor{4, 3, Float32} -> Tensor{4, 3, Float64}"] |
0.18 (5%) ✅ | 1.00 (1%) |
["promotion", "Vec{dim, Float32} -> Vec{3, Float64}"] |
0.27 (5%) ✅ | 1.00 (1%) |