From 1f1f10e13a24b8b01d0e295325f6a72a3bf0bbcd Mon Sep 17 00:00:00 2001 From: Alexander Krotov Date: Wed, 3 Apr 2019 20:03:42 +0300 Subject: [PATCH] energy: reschedule UpdateEnergySource only if it has already expired Otherwise, if energy consumption is queried frequently, canceled events are produced. These events take up memory and slow down the simulator. --- src/energy/model/basic-energy-source.cc | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/energy/model/basic-energy-source.cc b/src/energy/model/basic-energy-source.cc index e3bf66b2a..0024d910e 100644 --- a/src/energy/model/basic-energy-source.cc +++ b/src/energy/model/basic-energy-source.cc @@ -154,8 +154,6 @@ BasicEnergySource::UpdateEnergySource (void) NS_LOG_FUNCTION (this); NS_LOG_DEBUG ("BasicEnergySource:Updating remaining energy."); - m_energyUpdateEvent.Cancel (); - double remainingEnergy = m_remainingEnergyJ; CalculateRemainingEnergy (); @@ -176,9 +174,12 @@ BasicEnergySource::UpdateEnergySource (void) NotifyEnergyChanged (); } - m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval, - &BasicEnergySource::UpdateEnergySource, - this); + if (m_energyUpdateEvent.IsExpired ()) + { + m_energyUpdateEvent = Simulator::Schedule (m_energyUpdateInterval, + &BasicEnergySource::UpdateEnergySource, + this); + } } /*