Configuration - rhannequin/astronoby GitHub Wiki
Astronoby handles an internal configuration to enable users to tweak the performance and precision of computed data.
Cache
Some calculations are expensive but also repetitive in the intermediary computed data. To improve performance, an internal cache system has been developed.
➡️ Please note caching is disabled by default.
Enable caching
You can turn caching on with the following command:
Astronoby.configuration.cache_enabled = true
Once caching is enabled, it will be used for the following parts of the library with default precision values:
- Geometric positions
- Topocentric positions when computing rising/transit/setting times
- Moon phases
- Nutation
- Precession
Cache precision
When cache is enabled, some data is cached following a default precision threshold so that precision doesn't noticeably decrease.
However, users may want to improve even more the performance at the cost of some precision.
It is possible to change the precision value for the following:
- Geometric position, default:
9
- Topocentric position, default:
5
- Nutation, default:
2
- Precession, default:
2
Precision value
The precision value is how much rounded instants are. Because instants are stored as a Julian Day, rounding may not seem very natural.
Let's take the example of 1
. Rounding a Julian Day with only one digit means that all times within 8640 seconds will rounded to the same instant, which means a rounding of maximum 2.4 hours.
1
: 2.4 hours2
: 14.4 minutes3
: 86.4 seconds4
: 8.6 seconds5
: 0.86 seconds6
: 0.086 seconds7
: 0.0086 seconds- ...
Setting custom precision
To set up your how precision, you can use:
Astronoby.cache_precision(:geometric, 5)
All geometric positions of the same celestial body withing 0.86 seconds will be rounded and cached.
Cache size
Cache has limited and configurable capacity, set by default to 10,000 stored items. This value can be changed to any positive number.
Astronoby.configuration.cache_enabled = true
Astronoby.cache.max_size
# => 10000
Astronoby.cache.max_size = 1000000
Astronoby.cache.max_size
# => 1000000