Skip to content

Performance Examples

Setup

julia
using PrettyChairmarks
using SatcomCoordinates
uv = rand(UV())
# We change_crs from UV instead of doing all rand to avoid error for the limited domain of UV
tp = change_crs(ThetaPhi(), uv)
el_az = change_crs(ElOverAz(), uv)
az_el = change_crs(AzOverEl(), uv)
pv = change_crs(DirectionCosines(), uv)
Pointing{DirectionCosines}(0.591388418188408, 0.6454879857754637, 0.48332701047235843)

Construction

UV

julia
@bs Tuple(rand(2)./10) UV(_...)
Chairmarks.Benchmark: 3525 samples with 2767 evaluations.
 Range (minmax):  9.562 ns18.079 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     9.573 ns               GC (median):    0.00%
 Time  (mean ± σ):   9.665 ns ±  0.488 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  9.56 ns      Histogram: log(frequency) by time     12.2 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

ThetaPhi

julia
@bs Tuple(rand(2)) ThetaPhi(_...)
Chairmarks.Benchmark: 3512 samples with 2881 evaluations.
 Range (minmax):  9.250 ns34.988 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     9.261 ns               GC (median):    0.00%
 Time  (mean ± σ):   9.353 ns ±  0.648 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  9.25 ns      Histogram: log(frequency) by time     11.8 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

ElOverAz

julia
@bs Tuple(rand(2)) ElOverAz(_...)
Chairmarks.Benchmark: 3498 samples with 2892 evaluations.
 Range (minmax):  9.253 ns18.714 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     9.260 ns               GC (median):    0.00%
 Time  (mean ± σ):   9.373 ns ±  0.636 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  9.25 ns      Histogram: log(frequency) by time     11.9 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

AzOverEl

julia
@bs Tuple(rand(2)) AzOverEl(_...)
Chairmarks.Benchmark: 3487 samples with 2809 evaluations.
 Range (minmax):  9.562 ns16.161 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     9.570 ns               GC (median):    0.00%
 Time  (mean ± σ):   9.656 ns ±  0.460 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  9.56 ns      Histogram: log(frequency) by time     12.2 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

DirectionCosines

julia
@bs Tuple(rand(3)) DirectionCosines(_...)
Chairmarks.Benchmark: 3518 samples with 3376 evaluations.
 Range (minmax):  7.713 ns14.681 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     7.765 ns               GC (median):    0.00%
 Time  (mean ± σ):   7.933 ns ±  0.437 ns GC (mean ± σ):  0.00% ± 0.00%



  7.71 ns      Histogram: log(frequency) by time     10.1 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

ECEF

julia
@bs Tuple(rand(3)) ECEF(_...)
Chairmarks.Benchmark: 4173 samples with 7300 evaluations.
 Range (minmax):  3.082 ns7.702 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     3.087 ns              GC (median):    0.00%
 Time  (mean ± σ):   3.115 ns ± 0.179 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  3.08 ns     Histogram: log(frequency) by time     4.08 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

ECI

julia
@bs Tuple(rand(3)) ECI(_...)
Chairmarks.Benchmark: 4205 samples with 7251 evaluations.
 Range (minmax):  3.082 ns7.791 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     3.087 ns              GC (median):    0.00%
 Time  (mean ± σ):   3.114 ns ± 0.173 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  3.08 ns     Histogram: log(frequency) by time     4.08 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

LLA

julia
@bs Tuple(rand(3)) LLA(_...)
Chairmarks.Benchmark: 3612 samples with 3654 evaluations.
 Range (minmax):  7.093 ns14.510 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     7.101 ns               GC (median):    0.00%
 Time  (mean ± σ):   7.171 ns ±  0.395 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  7.09 ns      Histogram: log(frequency) by time     9.12 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

Conversions

From DirectionCosines

julia
@bs change_crs(UV(), $pv)
Chairmarks.Benchmark: 4059 samples with 6304 evaluations.
 Range (minmax):  3.700 ns7.323 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     3.705 ns              GC (median):    0.00%
 Time  (mean ± σ):   3.743 ns ± 0.212 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  3.7 ns      Histogram: log(frequency) by time     4.86 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ThetaPhi(), $pv)
Chairmarks.Benchmark: 3266 samples with 1188 evaluations.
 Range (minmax):  23.757 ns41.965 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     24.027 ns               GC (median):    0.00%
 Time  (mean ± σ):   24.280 ns ±  1.253 ns GC (mean ± σ):  0.00% ± 0.00%



  23.8 ns      Histogram: log(frequency) by time      30.3 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ElOverAz(), $pv)
Chairmarks.Benchmark: 3266 samples with 1085 evaluations.
 Range (minmax):  26.141 ns71.554 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     26.391 ns               GC (median):    0.00%
 Time  (mean ± σ):   26.598 ns ±  1.524 ns GC (mean ± σ):  0.00% ± 0.00%



  26.1 ns      Histogram: log(frequency) by time      33.1 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(AzOverEl(), $pv)
Chairmarks.Benchmark: 3267 samples with 1239 evaluations.
 Range (minmax):  22.827 ns37.447 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     22.973 ns               GC (median):    0.00%
 Time  (mean ± σ):   23.200 ns ±  1.143 ns GC (mean ± σ):  0.00% ± 0.00%

                                                         

  22.8 ns      Histogram: log(frequency) by time      28.9 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

from UV

julia
@bs change_crs(ThetaPhi(), $uv)
Chairmarks.Benchmark: 3239 samples with 988 evaluations.
 Range (minmax):  28.707 ns48.512 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     29.022 ns               GC (median):    0.00%
 Time  (mean ± σ):   29.293 ns ±  1.465 ns GC (mean ± σ):  0.00% ± 0.00%



  28.7 ns      Histogram: log(frequency) by time      36.6 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ElOverAz(), $uv)
Chairmarks.Benchmark: 3231 samples with 901 evaluations.
 Range (minmax):  31.635 ns53.196 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     31.980 ns               GC (median):    0.00%
 Time  (mean ± σ):   32.331 ns ±  1.680 ns GC (mean ± σ):  0.00% ± 0.00%



  31.6 ns      Histogram: log(frequency) by time      40.4 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(AzOverEl(), $uv)
Chairmarks.Benchmark: 3234 samples with 959 evaluations.
 Range (minmax):  29.858 ns81.414 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     29.962 ns               GC (median):    0.00%
 Time  (mean ± σ):   30.249 ns ±  1.696 ns GC (mean ± σ):  0.00% ± 0.00%

                                                           

  29.9 ns      Histogram: log(frequency) by time      37.7 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(DirectionCosines(), $uv)
Chairmarks.Benchmark: 4233 samples with 7255 evaluations.
 Range (minmax):  3.084 ns7.227 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     3.087 ns              GC (median):    0.00%
 Time  (mean ± σ):   3.122 ns ± 0.199 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  3.08 ns     Histogram: log(frequency) by time     4.12 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

from ThetaPhi

julia
@bs change_crs(UV(), $tp)
Chairmarks.Benchmark: 3278 samples with 1242 evaluations.
 Range (minmax):  22.676 ns52.232 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     22.901 ns               GC (median):    0.00%
 Time  (mean ± σ):   23.141 ns ±  1.220 ns GC (mean ± σ):  0.00% ± 0.00%



  22.7 ns      Histogram: log(frequency) by time        29 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ElOverAz(), $tp)
Chairmarks.Benchmark: 3165 samples with 443 evaluations.
 Range (minmax):  65.404 ns122.056 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     66.242 ns                GC (median):    0.00%
 Time  (mean ± σ):   66.772 ns ±   3.209 ns GC (mean ± σ):  0.00% ± 0.00%



  65.4 ns       Histogram: log(frequency) by time      82.8 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(AzOverEl(), $tp)
Chairmarks.Benchmark: 3174 samples with 513 evaluations.
 Range (minmax):  56.226 ns129.698 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     56.871 ns                GC (median):    0.00%
 Time  (mean ± σ):   57.471 ns ±   3.395 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  56.2 ns       Histogram: log(frequency) by time      72.5 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(DirectionCosines(), $tp)
Chairmarks.Benchmark: 3267 samples with 1311 evaluations.
 Range (minmax):  21.452 ns47.671 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     21.811 ns               GC (median):    0.00%
 Time  (mean ± σ):   22.063 ns ±  1.241 ns GC (mean ± σ):  0.00% ± 0.00%

                                                     

  21.5 ns      Histogram: log(frequency) by time      27.6 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

from ElOverAz

julia
@bs change_crs(UV(), $el_az)
Chairmarks.Benchmark: 3284 samples with 1321 evaluations.
 Range (minmax):  21.129 ns43.609 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     21.759 ns               GC (median):    0.00%
 Time  (mean ± σ):   21.912 ns ±  1.217 ns GC (mean ± σ):  0.00% ± 0.00%



  21.1 ns      Histogram: log(frequency) by time      27.4 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ThetaPhi(), $el_az)
Chairmarks.Benchmark: 3178 samples with 526 evaluations.
 Range (minmax):  54.302 ns248.432 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     54.665 ns                GC (median):    0.00%
 Time  (mean ± σ):   56.094 ns ±   9.444 ns GC (mean ± σ):  0.00% ± 0.00%



  54.3 ns       Histogram: log(frequency) by time      75.3 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(AzOverEl(), $el_az)
Chairmarks.Benchmark: 3148 samples with 574 evaluations.
 Range (minmax):  49.692 ns231.357 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     50.828 ns                GC (median):    0.00%
 Time  (mean ± σ):   51.935 ns ±   8.282 ns GC (mean ± σ):  0.00% ± 0.00%



  49.7 ns       Histogram: log(frequency) by time      71.6 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(DirectionCosines(), $el_az)
Chairmarks.Benchmark: 3384 samples with 1736 evaluations.
 Range (minmax):  16.044 ns36.428 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     16.096 ns               GC (median):    0.00%
 Time  (mean ± σ):   16.256 ns ±  0.947 ns GC (mean ± σ):  0.00% ± 0.00%

                                                          

  16 ns        Histogram: log(frequency) by time      20.4 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

from AzOverEl

julia
@bs change_crs(UV(), $az_el)
Chairmarks.Benchmark: 3314 samples with 1308 evaluations.
 Range (minmax):  21.218 ns39.715 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     21.608 ns               GC (median):    0.00%
 Time  (mean ± σ):   21.821 ns ±  1.106 ns GC (mean ± σ):  0.00% ± 0.00%



  21.2 ns      Histogram: log(frequency) by time      27.3 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ThetaPhi(), $az_el)
Chairmarks.Benchmark: 3170 samples with 498 evaluations.
 Range (minmax):  58.120 ns93.671 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     58.926 ns               GC (median):    0.00%
 Time  (mean ± σ):   59.373 ns ±  2.829 ns GC (mean ± σ):  0.00% ± 0.00%



  58.1 ns      Histogram: log(frequency) by time      73.7 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(ElOverAz(), $az_el)
Chairmarks.Benchmark: 3173 samples with 512 evaluations.
 Range (minmax):  56.160 ns101.225 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     57.256 ns                GC (median):    0.00%
 Time  (mean ± σ):   57.754 ns ±   2.786 ns GC (mean ± σ):  0.00% ± 0.00%



  56.2 ns       Histogram: log(frequency) by time      71.7 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.
julia
@bs change_crs(DirectionCosines(), $az_el)
Chairmarks.Benchmark: 3370 samples with 1731 evaluations.
 Range (minmax):  16.044 ns29.727 ns GC (min … max): 0.00% … 0.00%
 Time  (median):     16.206 ns               GC (median):    0.00%
 Time  (mean ± σ):   16.353 ns ±  0.846 ns GC (mean ± σ):  0.00% ± 0.00%



  16 ns        Histogram: log(frequency) by time      20.5 ns <

 Memory estimate: 0.0 bytes, allocs estimate: 0.

Utilities

get_angular_distance

@example
@bs Tuple(rand(ThetaPhi, 2)) get_angular_distance(_...)
@example
@bs Tuple(rand(UV, 2)) get_angular_distance(_...)
@example
@bs Tuple(rand(ElOverAz, 2)) get_angular_distance(_...)
@example
@bs Tuple(rand(AzOverEl, 2)) get_angular_distance(_...)
@example
@bs Tuple(rand(DirectionCosines, 2)) get_angular_distance(_...)

get_angular_offset

@example
@bs Tuple(rand(ThetaPhi, 2)) get_angular_offset(_...)
@example
@bs Tuple(rand(UV, 2)) get_angular_offset(_...)
@example
@bs Tuple(rand(ElOverAz, 2)) get_angular_offset(_...)
@example
@bs Tuple(rand(AzOverEl, 2)) get_angular_offset(_...)
@example
@bs Tuple(rand(DirectionCosines, 2)) get_angular_offset(_...)

add_angular_offset

@example
# We need to make sure we don't have a resulting target in -z axis hemisphere
@bs (UV(-rand(), 0), ThetaPhi(rand() * 90°, 0)) add_angular_offset(_...)
@example
@bs (rand(ThetaPhi), rand(ThetaPhi)) add_angular_offset(_...)
@example
@bs (rand(ElOverAz), rand(ThetaPhi)) add_angular_offset(_...)
@example
@bs (rand(AzOverEl), rand(ThetaPhi)) add_angular_offset(_...)
@example
@bs (rand(DirectionCosines), rand(ThetaPhi)) add_angular_offset(_...)