Remove CoreCH heaps

This commit is contained in:
Michael Krasnyk 2017-04-11 21:38:26 +02:00 committed by Patrick Niklaus
parent e498ad3ee7
commit ba974c73bf
2 changed files with 18 additions and 77 deletions

View File

@ -12,6 +12,10 @@ namespace osrm
namespace engine namespace engine
{ {
template <typename Algorithm> struct SearchEngineData
{
};
struct HeapData struct HeapData
{ {
NodeID parent; NodeID parent;
@ -24,7 +28,7 @@ struct ManyToManyHeapData : HeapData
ManyToManyHeapData(NodeID p, EdgeWeight duration) : HeapData(p), duration(duration) {} ManyToManyHeapData(NodeID p, EdgeWeight duration) : HeapData(p), duration(duration) {}
}; };
template <typename Algorithm> struct SearchEngineData template <> struct SearchEngineData<routing_algorithms::ch::Algorithm>
{ {
using QueryHeap = util:: using QueryHeap = util::
BinaryHeap<NodeID, NodeID, EdgeWeight, HeapData, util::UnorderedMapStorage<NodeID, int>>; BinaryHeap<NodeID, NodeID, EdgeWeight, HeapData, util::UnorderedMapStorage<NodeID, int>>;

View File

@ -7,30 +7,17 @@ namespace osrm
namespace engine namespace engine
{ {
template <typename Algorithm> // CH heaps
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr using CH = routing_algorithms::ch::Algorithm;
SearchEngineData<Algorithm>::forward_heap_1; SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_1;
template <typename Algorithm> SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_1;
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_2;
SearchEngineData<Algorithm>::reverse_heap_1; SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_2;
template <typename Algorithm> SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_3;
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_3;
SearchEngineData<Algorithm>::forward_heap_2; SearchEngineData<CH>::ManyToManyHeapPtr SearchEngineData<CH>::many_to_many_heap;
template <typename Algorithm>
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr
SearchEngineData<Algorithm>::reverse_heap_2;
template <typename Algorithm>
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr
SearchEngineData<Algorithm>::forward_heap_3;
template <typename Algorithm>
typename SearchEngineData<Algorithm>::SearchEngineHeapPtr
SearchEngineData<Algorithm>::reverse_heap_3;
template <typename Algorithm>
typename SearchEngineData<Algorithm>::ManyToManyHeapPtr
SearchEngineData<Algorithm>::many_to_many_heap;
template <typename Algorithm> void SearchEngineData<CH>::InitializeOrClearFirstThreadLocalStorage(unsigned number_of_nodes)
void SearchEngineData<Algorithm>::InitializeOrClearFirstThreadLocalStorage(unsigned number_of_nodes)
{ {
if (forward_heap_1.get()) if (forward_heap_1.get())
{ {
@ -51,9 +38,7 @@ void SearchEngineData<Algorithm>::InitializeOrClearFirstThreadLocalStorage(unsig
} }
} }
template <typename Algorithm> void SearchEngineData<CH>::InitializeOrClearSecondThreadLocalStorage(unsigned number_of_nodes)
void SearchEngineData<Algorithm>::InitializeOrClearSecondThreadLocalStorage(
unsigned number_of_nodes)
{ {
if (forward_heap_2.get()) if (forward_heap_2.get())
{ {
@ -74,8 +59,7 @@ void SearchEngineData<Algorithm>::InitializeOrClearSecondThreadLocalStorage(
} }
} }
template <typename Algorithm> void SearchEngineData<CH>::InitializeOrClearThirdThreadLocalStorage(unsigned number_of_nodes)
void SearchEngineData<Algorithm>::InitializeOrClearThirdThreadLocalStorage(unsigned number_of_nodes)
{ {
if (forward_heap_3.get()) if (forward_heap_3.get())
{ {
@ -96,9 +80,7 @@ void SearchEngineData<Algorithm>::InitializeOrClearThirdThreadLocalStorage(unsig
} }
} }
template <typename Algorithm> void SearchEngineData<CH>::InitializeOrClearManyToManyThreadLocalStorage(unsigned number_of_nodes)
void SearchEngineData<Algorithm>::InitializeOrClearManyToManyThreadLocalStorage(
unsigned number_of_nodes)
{ {
if (many_to_many_heap.get()) if (many_to_many_heap.get())
{ {
@ -110,51 +92,6 @@ void SearchEngineData<Algorithm>::InitializeOrClearManyToManyThreadLocalStorage(
} }
} }
// CH
using CH = routing_algorithms::ch::Algorithm;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_1;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_1;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_2;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_2;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::forward_heap_3;
template SearchEngineData<CH>::SearchEngineHeapPtr SearchEngineData<CH>::reverse_heap_3;
template SearchEngineData<CH>::ManyToManyHeapPtr SearchEngineData<CH>::many_to_many_heap;
template void
SearchEngineData<routing_algorithms::ch::Algorithm>::InitializeOrClearFirstThreadLocalStorage(
unsigned number_of_nodes);
template void
SearchEngineData<CH>::InitializeOrClearSecondThreadLocalStorage(unsigned number_of_nodes);
template void
SearchEngineData<CH>::InitializeOrClearThirdThreadLocalStorage(unsigned number_of_nodes);
template void
SearchEngineData<CH>::InitializeOrClearManyToManyThreadLocalStorage(unsigned number_of_nodes);
// CoreCH
using CoreCH = routing_algorithms::corech::Algorithm;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::forward_heap_1;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::reverse_heap_1;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::forward_heap_2;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::reverse_heap_2;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::forward_heap_3;
template SearchEngineData<CoreCH>::SearchEngineHeapPtr SearchEngineData<CoreCH>::reverse_heap_3;
template SearchEngineData<CoreCH>::ManyToManyHeapPtr SearchEngineData<CoreCH>::many_to_many_heap;
template void
SearchEngineData<CoreCH>::InitializeOrClearFirstThreadLocalStorage(unsigned number_of_nodes);
template void
SearchEngineData<CoreCH>::InitializeOrClearSecondThreadLocalStorage(unsigned number_of_nodes);
template void
SearchEngineData<CoreCH>::InitializeOrClearThirdThreadLocalStorage(unsigned number_of_nodes);
template void
SearchEngineData<CoreCH>::InitializeOrClearManyToManyThreadLocalStorage(unsigned number_of_nodes);
// MLD // MLD
using MLD = routing_algorithms::mld::Algorithm; using MLD = routing_algorithms::mld::Algorithm;
SearchEngineData<MLD>::SearchEngineHeapPtr SearchEngineData<MLD>::forward_heap_1; SearchEngineData<MLD>::SearchEngineHeapPtr SearchEngineData<MLD>::forward_heap_1;