JuliaTime / TimeZones.jl

IANA time zone database access for the Julia programming language
Other
85 stars 54 forks source link

Working package benchmarks #292

Closed omus closed 4 years ago

omus commented 4 years ago

The package benchmarks were previously broken. I've also added some additional benchmarks from some recent PRs. I want to get this merged before https://github.com/JuliaTime/TimeZones.jl/pull/291 so I can use this in the comparison.

codecov-commenter commented 4 years ago

Codecov Report

Merging #292 into master will decrease coverage by 0.00%. The diff coverage is n/a.

Impacted file tree graph

@@            Coverage Diff             @@
##           master     #292      +/-   ##
==========================================
- Coverage   93.53%   93.53%   -0.01%     
==========================================
  Files          31       31              
  Lines        1532     1531       -1     
==========================================
- Hits         1433     1432       -1     
  Misses         99       99              
Impacted Files Coverage Δ
src/types/variabletimezone.jl 100.00% <0.00%> (ø)

Continue to review full report at Codecov.

Legend - Click here to learn more Δ = absolute <relative> (impact), ø = not affected, ? = missing data Powered by Codecov. Last update 48fe988...e016e6b. Read the comment docs.

omus commented 4 years ago

I'm going to have to add a benchmark CI job in a follow up PR as comparing against master will fail as the master currently doesn't work with PkgBenchmark.jl

omus commented 4 years ago

Posting benchmark report here. Not super useful as I can't compare it with anything but it provides a baseline for the future.

Benchmark Report for /Users/omus/.julia/dev/TimeZones

Job Properties

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
["ZonedDateTime", "date-period-range"] 35.460 μs (5%) 125.83 KiB (1%) 1126
["ZonedDateTime", "fill"] 445.686 ns (5%) 4.06 KiB (1%) 1
["ZonedDateTime", "local", "ambiguous"] 103.142 ns (5%) 352 bytes (1%) 4
["ZonedDateTime", "local", "standard"] 86.727 ns (5%) 304 bytes (1%) 3
["ZonedDateTime", "time-period-range"] 765.868 μs (5%) 1.81 MiB (1%) 17588
["ZonedDateTime", "utc"] 51.826 ns (5%) 176 bytes (1%) 2
["arithmetic", "DatePeriod"] 95.204 ns (5%) 304 bytes (1%) 3
["arithmetic", "TimePeriod"] 87.372 ns (5%) 176 bytes (1%) 2
["interpret", "local", "ambiguous"] 98.392 ns (5%) 352 bytes (1%) 4
["interpret", "local", "non-existent"] 47.317 ns (5%) 80 bytes (1%) 1
["interpret", "local", "standard"] 80.122 ns (5%) 304 bytes (1%) 3
["interpret", "utc"] 48.130 ns (5%) 176 bytes (1%) 2
["parse", "ISOZonedDateTimeFormat"] 830.141 ns (5%) 640 bytes (1%) 13
["parse", "generic-string"] 7.822 μs (5%) 4.20 KiB (1%) 127
["parse", "issue#25"] 1.420 ms (5%) 989.25 KiB (1%) 17570
["transition_range", "local", "ambiguous"] 15.795 ns (5%)
["transition_range", "local", "non-existent"] 15.792 ns (5%)
["transition_range", "local", "standard"] 15.293 ns (5%)
["transition_range", "utc"] 10.541 ns (5%)
["tryparsenext_fixedtz", "+06"] 86.047 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "+0600"] 119.565 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "+06:00"] 135.763 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "-06"] 86.077 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "-0600"] 119.306 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "-06:00"] 135.242 ns (5%) 48 bytes (1%) 1
["tryparsenext_fixedtz", "UTC"] 25.372 ns (5%)
["tryparsenext_fixedtz", "Z"] 9.883 ns (5%) 32 bytes (1%) 1
["tryparsenext_tz", "America/Argentina/ComodRivadavia"] 744.203 ns (5%) 48 bytes (1%) 1
["tryparsenext_tz", "America/Winnipeg"] 433.955 ns (5%) 48 bytes (1%) 1
["tryparsenext_tz", "EST"] 128.740 ns (5%)
["tryparsenext_tz", "GMT"] 95.201 ns (5%) 48 bytes (1%) 1
["tryparsenext_tz", "UTC"] 93.575 ns (5%) 48 bytes (1%) 1
["tz_data", "parse_components"] 1.653 μs (5%) 624 bytes (1%) 15

Benchmark Group List

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

Julia versioninfo

Julia Version 1.5.1
Commit 697e782ab8 (2020-08-25 20:08 UTC)
Platform Info:
  OS: macOS (x86_64-apple-darwin18.7.0)
  uname: Darwin 18.7.0 Darwin Kernel Version 18.7.0: Thu Jun 18 20:50:10 PDT 2020; root:xnu-4903.278.43~1/RELEASE_X86_64 x86_64 i386
  CPU: Intel(R) Core(TM) i7-7567U CPU @ 3.50GHz:
              speed         user         nice          sys         idle          irq
       #1  3500 MHz      77257 s          0 s      77477 s     616175 s          0 s
       #2  3500 MHz      42542 s          0 s      25852 s     702511 s          0 s
       #3  3500 MHz      78349 s          0 s      52286 s     640269 s          0 s
       #4  3500 MHz      37546 s          0 s      21030 s     712329 s          0 s

  Memory: 16.0 GB (348.20703125 MB free)
  Uptime: 77091.0 sec
  Load Avg:  3.150390625  3.0908203125  3.08935546875
  WORD_SIZE: 64
  LIBM: libopenlibm
  LLVM: libLLVM-9.0.1 (ORCJIT, skylake)
omus commented 4 years ago

I'll also note some of the very fast benchmarks will probably need to be revised to increase their runtime (probably with multiple iterations) as otherwise we'll probably see a bunch of false regressions. I'll deal with those as I discover them.

omus commented 4 years ago

The Julia nightly for macOS is currently failing due to a known Julia bug.