Move heap initialization out of loop

This commit is contained in:
Patrick Niklaus 2015-09-01 00:33:35 +02:00
parent 262b380280
commit f167c3e12e

View File

@ -139,6 +139,12 @@ class MapMatching final : public BasicRoutingInterface<DataFacadeT, MapMatching<
MatchingDebugInfo matching_debug(osrm::json::Logger::get()); MatchingDebugInfo matching_debug(osrm::json::Logger::get());
matching_debug.initialize(candidates_list); matching_debug.initialize(candidates_list);
engine_working_data.InitializeOrClearFirstThreadLocalStorage(
super::facade->GetNumberOfNodes());
QueryHeap &forward_heap = *(engine_working_data.forward_heap_1);
QueryHeap &reverse_heap = *(engine_working_data.reverse_heap_1);
std::size_t breakage_begin = osrm::matching::INVALID_STATE; std::size_t breakage_begin = osrm::matching::INVALID_STATE;
std::vector<std::size_t> split_points; std::vector<std::size_t> split_points;
std::vector<std::size_t> prev_unbroken_timestamps; std::vector<std::size_t> prev_unbroken_timestamps;
@ -206,12 +212,6 @@ class MapMatching final : public BasicRoutingInterface<DataFacadeT, MapMatching<
const auto &current_timestamps_list = candidates_list[t]; const auto &current_timestamps_list = candidates_list[t];
const auto &current_coordinate = trace_coordinates[t]; const auto &current_coordinate = trace_coordinates[t];
engine_working_data.InitializeOrClearFirstThreadLocalStorage(
super::facade->GetNumberOfNodes());
QueryHeap &forward_heap = *(engine_working_data.forward_heap_1);
QueryHeap &reverse_heap = *(engine_working_data.reverse_heap_1);
// compute d_t for this timestamp and the next one // compute d_t for this timestamp and the next one
for (const auto s : osrm::irange<std::size_t>(0u, prev_viterbi.size())) for (const auto s : osrm::irange<std::size_t>(0u, prev_viterbi.size()))
{ {