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:
authorr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-12-07 10:30:34 +0300
committerr.kuznetsov <r.kuznetsov@corp.mail.ru>2016-12-07 12:47:26 +0300
commit46b80961c94ddde7aeaaaba988266f557d1a6d06 (patch)
treeeff2e8dad19e1a4e43d6bc798a71f947ff7225f8 /drape_frontend
parent086c963b37cf7e1834da8faa6feda77f27ec1000 (diff)
Added preallocation of vectors in RuleDrawer
Diffstat (limited to 'drape_frontend')
-rw-r--r--drape_frontend/rule_drawer.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/drape_frontend/rule_drawer.cpp b/drape_frontend/rule_drawer.cpp
index 5ba75f0d91..f78fcb7086 100644
--- a/drape_frontend/rule_drawer.cpp
+++ b/drape_frontend/rule_drawer.cpp
@@ -29,6 +29,8 @@
namespace
{
int constexpr kOutlineMinZoomLevel = 16;
+ // 10 11 12 13 14 15 16 17 18 19
+vector<size_t> const kAverageSegmentsCount = { 10000, 5000, 10000, 5000, 2500, 5000, 2000, 1000, 500, 500 };
df::BaseApplyFeature::HotelData ExtractHotelData(FeatureType const & f)
{
@@ -65,7 +67,12 @@ void ExtractTrafficGeometry(FeatureType const & f, df::RoadClass const & roadCla
static vector<uint8_t> directions = {traffic::TrafficInfo::RoadSegmentId::kForwardDirection,
traffic::TrafficInfo::RoadSegmentId::kReverseDirection};
auto & segments = geometry[f.GetID().m_mwmId];
- segments.reserve(segments.size() + directions.size() * (polyline.GetSize() - 1));
+
+ int const index = zoomLevel - 10; // 10 - the first zoom level in kAverageSegmentsCount.
+ ASSERT_GREATER(index, 0, ());
+ ASSERT_LESS(index, kAverageSegmentsCount.size(), ());
+ segments.reserve(kAverageSegmentsCount[index]);
+
for (uint16_t segIndex = 0; segIndex + 1 < static_cast<uint16_t>(polyline.GetSize()); ++segIndex)
{
for (size_t dirIndex = 0; dirIndex < directions.size(); ++dirIndex)