From d682a842cc3177aad2cac276c09a3bed52f8bddc Mon Sep 17 00:00:00 2001 From: Luc Maisonobe <luc@orekit.org> Date: Thu, 6 Dec 2018 07:28:24 +0100 Subject: [PATCH] Moved code out of loop. --- .../java/org/orekit/time/BurstSelector.java | 18 +++++++++++------- .../org/orekit/time/FixedStepSelector.java | 5 +++++ 2 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/orekit/time/BurstSelector.java b/src/main/java/org/orekit/time/BurstSelector.java index 85478f2e53..967c44fbcc 100644 --- a/src/main/java/org/orekit/time/BurstSelector.java +++ b/src/main/java/org/orekit/time/BurstSelector.java @@ -29,6 +29,11 @@ import org.hipparchus.util.FastMath; * {@link org.orekit.time.TimeScalesFactory#getUTC() UTC}, the first date of * each burst will occur at whole hours in UTC time. * </p> + * <p> + * This class stores internally the last selected dates, so it is <em>not</em> + * thread-safe. A separate selector should be used for each thread in multi-threading + * context. + * </p> * @author Luc Maisonobe * @since 9.3 */ @@ -91,17 +96,16 @@ public class BurstSelector implements DatesSelector { final List<AbsoluteDate> selected = new ArrayList<>(); - boolean reset = first == null || start.durationFrom(first) > burstPeriod; + final boolean reset = first == null || start.durationFrom(first) > burstPeriod; + if (reset) { + first = null; + lastSize = 0; + } + for (AbsoluteDate next = reset ? start : last.shiftedBy(highRateStep); next.compareTo(end) <= 0; next = last.shiftedBy(highRateStep)) { - if (reset) { - first = null; - lastSize = 0; - reset = false; - } - if (lastSize == maxBurstSize) { // we have exceeded burst size, jump to next burst next = first.shiftedBy(burstPeriod); diff --git a/src/main/java/org/orekit/time/FixedStepSelector.java b/src/main/java/org/orekit/time/FixedStepSelector.java index 40c3c80548..a6ec74d3af 100644 --- a/src/main/java/org/orekit/time/FixedStepSelector.java +++ b/src/main/java/org/orekit/time/FixedStepSelector.java @@ -29,6 +29,11 @@ import org.hipparchus.util.FastMath; * {@link org.orekit.time.TimeScalesFactory#getUTC() UTC}, dates will be selected * at whole minutes in UTC time. * </p> + * <p> + * This class stores internally the last selected dates, so it is <em>not</em> + * thread-safe. A separate selector should be used for each thread in multi-threading + * context. + * </p> * @author Luc Maisonobe * @since 9.3 */ -- GitLab