From 5c3398c280bcdb2bc5fb4a925b988745447be5db Mon Sep 17 00:00:00 2001 From: rparanjpe Date: Tue, 15 Dec 2015 19:12:33 -0800 Subject: [PATCH] name_lengths std::vector --> stxxl::vector --- CMakeLists.txt | 1 + data_structures/range_table.hpp | 3 ++- extractor/extraction_containers.hpp | 2 +- unit_tests/data_structures/range_table.cpp | 18 ++++++++++-------- 4 files changed, 14 insertions(+), 10 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 965e16448..b8fecc577 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -314,6 +314,7 @@ include_directories(SYSTEM ${STXXL_INCLUDE_DIR}) target_link_libraries(OSRM ${STXXL_LIBRARY}) target_link_libraries(osrm-extract ${STXXL_LIBRARY}) target_link_libraries(osrm-prepare ${STXXL_LIBRARY}) +target_link_libraries(datastructure-tests ${STXXL_LIBRARY}) set(OpenMP_FIND_QUIETLY ON) find_package(OpenMP) diff --git a/data_structures/range_table.hpp b/data_structures/range_table.hpp index 4662f06c0..bf7bda343 100644 --- a/data_structures/range_table.hpp +++ b/data_structures/range_table.hpp @@ -35,6 +35,7 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include #include #include +#include /* * These pre-declarations are needed because parsing C++ is hard @@ -82,7 +83,7 @@ template class RangeTable } // construct table from length vector - explicit RangeTable(const std::vector &lengths) + explicit RangeTable(const stxxl::vector &lengths) { const unsigned number_of_blocks = [&lengths]() { diff --git a/extractor/extraction_containers.hpp b/extractor/extraction_containers.hpp index 9c0a7d103..541ad3537 100644 --- a/extractor/extraction_containers.hpp +++ b/extractor/extraction_containers.hpp @@ -71,7 +71,7 @@ class ExtractionContainers STXXLNodeVector all_nodes_list; STXXLEdgeVector all_edges_list; stxxl::vector name_char_data; - std::vector name_lengths; + stxxl::vector name_lengths; STXXLRestrictionsVector restrictions_list; STXXLWayIDStartEndVector way_start_end_id_list; std::unordered_map external_to_internal_node_id_map; diff --git a/unit_tests/data_structures/range_table.cpp b/unit_tests/data_structures/range_table.cpp index ec3b724ad..da4e5ac42 100644 --- a/unit_tests/data_structures/range_table.cpp +++ b/unit_tests/data_structures/range_table.cpp @@ -38,7 +38,7 @@ typedef RangeTable TestRangeTable; BOOST_AUTO_TEST_SUITE(range_table) -void ConstructionTest(std::vector lengths, std::vector offsets) +void ConstructionTest(stxxl::vector lengths, std::vector offsets) { BOOST_ASSERT(lengths.size() == offsets.size() - 1); @@ -52,7 +52,7 @@ void ConstructionTest(std::vector lengths, std::vector offse } } -void ComputeLengthsOffsets(std::vector &lengths, +void ComputeLengthsOffsets(stxxl::vector &lengths, std::vector &offsets, unsigned num) { @@ -76,7 +76,7 @@ void ComputeLengthsOffsets(std::vector &lengths, BOOST_AUTO_TEST_CASE(serialization_test) { - std::vector lengths; + stxxl::vector lengths; std::vector offsets; ComputeLengthsOffsets(lengths, offsets, (BLOCK_SIZE + 1) * 10); @@ -98,10 +98,12 @@ BOOST_AUTO_TEST_CASE(serialization_test) BOOST_AUTO_TEST_CASE(construction_test) { // only offset empty block - ConstructionTest({1}, {0, 1}); + stxxl::vector empty_lengths; + empty_lengths.push_back(1); + ConstructionTest(empty_lengths, {0, 1}); // first block almost full => sentinel is last element of block // [0] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, (16)} - std::vector almost_full_lengths; + stxxl::vector almost_full_lengths; std::vector almost_full_offsets; ComputeLengthsOffsets(almost_full_lengths, almost_full_offsets, BLOCK_SIZE); ConstructionTest(almost_full_lengths, almost_full_offsets); @@ -109,7 +111,7 @@ BOOST_AUTO_TEST_CASE(construction_test) // first block full => sentinel is offset of new block, next block empty // [0] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} // [(153)] {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - std::vector full_lengths; + stxxl::vector full_lengths; std::vector full_offsets; ComputeLengthsOffsets(full_lengths, full_offsets, BLOCK_SIZE + 1); ConstructionTest(full_lengths, full_offsets); @@ -117,13 +119,13 @@ BOOST_AUTO_TEST_CASE(construction_test) // first block full and offset of next block not sentinel, but the first differential value // [0] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16} // [153] {(17), 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0} - std::vector over_full_lengths; + stxxl::vector over_full_lengths; std::vector over_full_offsets; ComputeLengthsOffsets(over_full_lengths, over_full_offsets, BLOCK_SIZE + 2); ConstructionTest(over_full_lengths, over_full_offsets); // test multiple blocks - std::vector multiple_lengths; + stxxl::vector multiple_lengths; std::vector multiple_offsets; ComputeLengthsOffsets(multiple_lengths, multiple_offsets, (BLOCK_SIZE + 1) * 10); ConstructionTest(multiple_lengths, multiple_offsets);