-
Notifications
You must be signed in to change notification settings - Fork 151
Open
Description
Somewhat counter intuitive:
using LinearAlgebra, StaticArrays, BenchmarkTools
f1(x, A) = dot(x, A * x)
f2(x, A) = dot(x, A, x)
let
x = randn(3)
A = randn(3, 3)
A = A * A' + 1e-6 * I
sx = SVector{3}(x...)
sA = SMatrix{3,3}(A...)
display(@benchmark(f1($sx, $sA)))
display(@benchmark(f2($sx, $sA)))
end
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
Range (min … max): 2.813 ns … 18.835 ns ┊ GC (min … max): 0.00% … 0.00%
Time (median): 2.817 ns ┊ GC (median): 0.00%
Time (mean ± σ): 2.878 ns ± 0.673 ns ┊ GC (mean ± σ): 0.00% ± 0.00%
█ ▅▁ ▁
█▅▁▁██▄▁▄▁▁▁▁▁▇▁▁▁▁▆▃▁▁▃▃▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▁▃▄▄▃▆▇▅ █
2.81 ns Histogram: log(frequency) by time 3.54 ns <
Memory estimate: 0 bytes, allocs estimate: 0.
BenchmarkTools.Trial: 10000 samples with 1000 evaluations.
Range (min … max): 3.815 ns … 54.783 ns ┊ GC (min … max): 0.00% … 0.00%
Time (median): 3.821 ns ┊ GC (median): 0.00%
Time (mean ± σ): 3.931 ns ± 1.141 ns ┊ GC (mean ± σ): 0.00% ± 0.00%
█ ▆ ▁ ▁
█▆▅█▅▇▃▅▇█▃▅▃▅▄▅▁▁▁▄▁▁▁▃▁▁▁▁▁▃▃▁▃▁▃▁▁▁▃▁▁▁▁▃▁▃▃▁▁▁▁▄▁▁▁▁▁▃ █
3.82 ns Histogram: log(frequency) by time 5.3 ns <
Memory estimate: 0 bytes, allocs estimate: 0.
julia> versioninfo()
Julia Version 1.11.1
Commit 8f5b7ca12ad (2024-10-16 10:53 UTC)
Build Info:
Official https://julialang.org/ release
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: 16 × 11th Gen Intel(R) Core(TM) i7-11700K @ 3.60GHz
WORD_SIZE: 64
LLVM: libLLVM-16.0.6 (ORCJIT, rocketlake)
Threads: 16 default, 0 interactive, 8 GC (on 16 virtual cores)
Environment:
JULIA_EDITOR = code
JULIA_NUM_THREADS = 16
Metadata
Metadata
Assignees
Labels
No labels