Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-12-12 13:46:21 +0300
committerVladimir Byko-Ianko <v.bykoianko@corp.mail.ru>2016-12-12 13:46:21 +0300
commit4f39c5d766c9babeb1757da9398c45b2e9cc1e56 (patch)
tree0731f747088ded3fd890ac7b1e2ccc6613d7368e /routing/routing_session.cpp
parentbd675c6b08cd7eda774548474a32787f2a96963a (diff)
Traffic cache for routing memory optimization.
Diffstat (limited to 'routing/routing_session.cpp')
-rw-r--r--routing/routing_session.cpp18
1 files changed, 16 insertions, 2 deletions
diff --git a/routing/routing_session.cpp b/routing/routing_session.cpp
index a22b546e49..133e5b8c83 100644
--- a/routing/routing_session.cpp
+++ b/routing/routing_session.cpp
@@ -589,9 +589,23 @@ void RoutingSession::OnTrafficInfoClear()
void RoutingSession::OnTrafficInfoAdded(TrafficInfo && info)
{
+ ASSERT_EQUAL(kSpeedGroupThresholdPercentage[static_cast<size_t>(SpeedGroup::G5)], 100, ());
+ ASSERT_EQUAL(kSpeedGroupThresholdPercentage[static_cast<size_t>(SpeedGroup::Unknown)], 100, ());
+
+ // The code below is memory optimization. Edges with traffic SpeedGroup::G5 and
+ // SpeedGroup::Unknown are 95% of all edges but they are not used in routing now.
+ // So we don't need to keep the information in TrafficCache.
+ TrafficInfo::Coloring const & fullColoring = info.GetColoring();
+ TrafficInfo::Coloring coloring;
+ for (auto const & kv : fullColoring)
+ {
+ if (kv.second != SpeedGroup::G5 && kv.second != SpeedGroup::Unknown)
+ coloring.insert(kv);
+ }
+
threads::MutexGuard guard(m_routingSessionMutex);
UNUSED_VALUE(guard);
- Set(move(info));
+ Set(info.GetMwmId(), move(coloring));
}
void RoutingSession::OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId)
@@ -601,7 +615,7 @@ void RoutingSession::OnTrafficInfoRemoved(MwmSet::MwmId const & mwmId)
Remove(mwmId);
}
-shared_ptr<traffic::TrafficInfo> RoutingSession::GetTrafficInfo(MwmSet::MwmId const & mwmId) const
+shared_ptr<TrafficInfo::Coloring> RoutingSession::GetTrafficInfo(MwmSet::MwmId const & mwmId) const
{
threads::MutexGuard guard(m_routingSessionMutex);
UNUSED_VALUE(guard);