Skip to content

Introduce performance benchmark#183

Merged
rhannequin merged 1 commit intomainfrom
performance-benchmark
May 21, 2025
Merged

Introduce performance benchmark#183
rhannequin merged 1 commit intomainfrom
performance-benchmark

Conversation

@rhannequin
Copy link
Owner

There will always be room for improvement regarding performance, but it's hard to know what and how to measure during development phase.

This adds a performance benchmark that can be executed locally in order to provide feedback on the impact on performance of a new change.

This first version benchmarks the main expensive features of the library. The goal is not to stick to absolute results, as they will depend on the computer running the benchmark. The correct use is to compare the results from a branch with the results on main.

Usage

$ bin/console
require_relative "benchmarks/performance"

PerformanceBenchmark.new.run

For fast feedback, you can customise the parameters:

PerformanceBenchmark
  .new(warmup_runs: 1, measure_runs: 3, iterations_per_run: 5)
  .run

Just as an indication of the result format, here is the output from my computer:

Astronoby Performance Benchmark
  Ruby version : 3.4.3
  Date         : 2025-05-20

Warming up (2 runs, not measured)...

Measuring (3 runs, each 10 iterations)...
  Run 1/3 complete.
  Run 2/3 complete.
  Run 3/3 complete.

RESULTS (averaged over 3 runs, each 10 iterations):
  rts_event_on:          26.66  ±  0.18 sec
  rts_events_between:     22.47  ±  0.18 sec
  twilight_event_on:     27.46  ±  0.18 sec
  moon_phases:           22.19  ±  0.12 sec
  total:                 98.78  ±  0.66 sec

@rhannequin rhannequin self-assigned this May 20, 2025
@rhannequin rhannequin merged commit bff0594 into main May 21, 2025
42 checks passed
@rhannequin rhannequin deleted the performance-benchmark branch May 21, 2025 08:27
@rhannequin rhannequin mentioned this pull request Jun 10, 2025
rhannequin added a commit that referenced this pull request Sep 1, 2025
## 0.8.0 - 2025-09-01

_If you are upgrading: please see [UPGRADING.md]._

### Bug fixes

* Fix UPGRADING documentation ([#178])
* Fix possible division by zero in RTS ([#185])

### Features

* Introduce performance benchmark ([#183])
* Cache positions in RTS calculator ([#182])
* Internal global LRU cache ([#186])
* Global configuration ([#187])
* Compute the constellation a body is in ([#199])
* Add `#phase_angle` and `#illuminated_fraction` to planets ([#200])
* Apparent magnitude ([#201])
* Add #events_between to TwilightCalculator with better accuracy ([#204])
* `#angular_diameter` on Solar System bodies ([#207])
* Fix constellation boundaries near 24h right ascension ([#209])

### Improvements

* Bump standard from 1.49.0 to 1.50.0 by @dependabot ([#177])
* Bump ephem from 0.3.0 to 0.4.1 by @dependabot ([#181], [#191])
* Bump irb from 1.14.3 to 1.15.2 by @dependabot ([#184])
* Bump rspec from 3.13.0 to 3.13.1 by @dependabot ([#188])
* Bump benchmark from 0.4.0 to 0.4.1 by @dependabot ([#189])
* Bump rake from 13.2.1 to 13.3.0 by @dependabot ([#190])
* Bump matrix from 0.4.2 to 0.4.3 by @dependabot ([#193])
* Update rubyzip requirement from ~> 2.3 to ~> 3.0 by @dependabot ([#194])
* Bump rubyzip from 3.0.0 to 3.0.2 by @dependabot ([#202], [#206])
* Exclude benchmarks from release ([#196])
* `Epoch` refactoring into `JulianDate` ([#197])
* Support Ruby 3.4.4 ([#198])
* Bump actions/checkout from 4 to 5 ([#203])
* Internal documentation ([#205])

### Backward-incompatible changes

* `Epoch` refactoring into `JulianDate` ([#197])
* `#angular_diameter` on Solar System bodies ([#207])
* Rename "epoch" ([#208])

### Closed issues

* Consider adding typical usage/deployment info ([#179])
* Performance degradation in v0.7 ([#180])

**Full Changelog**: v0.7.0...v0.8.0

[#177]: #177
[#178]: #178
[#179]: #179
[#180]: #180
[#181]: #181
[#182]: #182
[#183]: #183
[#184]: #184
[#185]: #185
[#186]: #186
[#187]: #187
[#188]: #188
[#189]: #189
[#190]: #190
[#191]: #191
[#193]: #193
[#194]: #194
[#196]: #196
[#197]: #197
[#198]: #198
[#199]: #199
[#200]: #200
[#201]: #201
[#202]: #202
[#203]: #203
[#204]: #204
[#205]: #205
[#206]: #206
[#207]: #207
[#208]: #208
[#209]: #209
[UPGRADING.md]: https://github.com/rhannequin/astronoby/blob/main/UPGRADING.md
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant