From 4228fce86b69df08b4577ef71e6e8836370068cf Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 20 Oct 2023 11:06:00 -0600 Subject: [PATCH] temporal: minor optimization for TempoMap::{tempo,meter}_at() to cover common case --- libs/temporal/temporal/tempo.h | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/libs/temporal/temporal/tempo.h b/libs/temporal/temporal/tempo.h index 888be4ad3c..70feee94fb 100644 --- a/libs/temporal/temporal/tempo.h +++ b/libs/temporal/temporal/tempo.h @@ -871,6 +871,10 @@ class /*LIBTEMPORAL_API*/ TempoMap : public PBD::StatefulDestructible template TempoPoint const & _tempo_at (TimeType when, Comparator cmp) const { assert (!_tempos.empty()); + if (_tempos.size() == 1) { + return _tempos.front(); + } + Tempos::const_iterator prev = _tempos.end(); for (Tempos::const_iterator t = _tempos.begin(); t != _tempos.end(); ++t) { if (cmp (*t, when)) { @@ -888,6 +892,10 @@ class /*LIBTEMPORAL_API*/ TempoMap : public PBD::StatefulDestructible template MeterPoint const & _meter_at (TimeType when, Comparator cmp) const { assert (!_meters.empty()); + if (_meters.size() == 1) { + return _meters.front(); + } + Meters::const_iterator prev = _meters.end(); for (Meters::const_iterator m = _meters.begin(); m != _meters.end(); ++m) { if (cmp (*m, when)) {