forked from organicmaps/organicmaps
[osrm][routing] Replace succinct gamma vector by elias_fano_compressed_list (minimize routing data)
This commit is contained in:
parent
38a45b3eb7
commit
2dc7a2cb3a
2 changed files with 8 additions and 17 deletions
|
@ -9,6 +9,7 @@
|
|||
//#include "../../../../routing/osrm_data_facade.hpp"
|
||||
|
||||
#include "../../../succinct/elias_fano.hpp"
|
||||
#include "../../../succinct/elias_fano_compressed_list.hpp"
|
||||
#include "../../../succinct/gamma_vector.hpp"
|
||||
#include "../../../succinct/mapper.hpp"
|
||||
|
||||
|
@ -94,24 +95,13 @@ void Converter::run(const std::string & name)
|
|||
|
||||
|
||||
std::cout << "--- Save edge data" << std::endl;
|
||||
succinct::gamma_vector edgeVector(edgesData);
|
||||
succinct::elias_fano_compressed_list edgeVector(edgesData);
|
||||
fileName = name + ".edgedata";
|
||||
succinct::mapper::freeze(edgeVector, fileName.c_str());
|
||||
|
||||
std::cout << "--- Save edge shortcut id's" << std::endl;
|
||||
succinct::elias_fano_compressed_list edgeIdVector(edgeId);
|
||||
fileName = name + ".edgeid";
|
||||
std::ofstream stream;
|
||||
stream.open(fileName);
|
||||
if (stream.is_open())
|
||||
{
|
||||
stream.write(reinterpret_cast<char const *>(edgeId.data()), sizeof(uint32_t) * edgeId.size());
|
||||
stream.close();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::cout << "Can't open file " << fileName << std::endl;
|
||||
std::terminate();
|
||||
}
|
||||
succinct::mapper::freeze(edgeIdVector, fileName.c_str());
|
||||
|
||||
std::cout << "--- Save edge shortcuts" << std::endl;
|
||||
succinct::bit_vector shortcutsVector(shortcuts);
|
||||
|
|
|
@ -7,6 +7,7 @@
|
|||
#include "../coding/file_container.hpp"
|
||||
|
||||
#include "../../../succinct/elias_fano.hpp"
|
||||
#include "../../../succinct/elias_fano_compressed_list.hpp"
|
||||
#include "../../../succinct/gamma_vector.hpp"
|
||||
#include "../../../succinct/bit_vector.hpp"
|
||||
#include "../../../succinct/mapper.hpp"
|
||||
|
@ -21,10 +22,10 @@ template <class EdgeDataT> class OsrmDataFacade : public BaseDataFacade<EdgeData
|
|||
{
|
||||
typedef BaseDataFacade<EdgeDataT> super;
|
||||
|
||||
succinct::gamma_vector m_edgeData;
|
||||
succinct::elias_fano_compressed_list m_edgeData;
|
||||
succinct::bit_vector m_shortcuts;
|
||||
succinct::elias_fano m_fanoMatrix;
|
||||
uint32_t const * m_edgeId;
|
||||
succinct::elias_fano_compressed_list m_edgeId;
|
||||
|
||||
FilesMappingContainer const & m_container;
|
||||
|
||||
|
@ -45,7 +46,7 @@ public:
|
|||
|
||||
m_handleEdgeId = m_container.Map(ROUTING_EDGEID_FILE_TAG);
|
||||
ASSERT(m_handleEdgeId.IsValid(), ());
|
||||
m_edgeId = reinterpret_cast<uint32_t const *>(m_handleEdgeId.GetData());
|
||||
succinct::mapper::map(m_edgeId, m_handleEdgeId.GetData());
|
||||
|
||||
m_handleShortcuts = m_container.Map(ROUTING_SHORTCUTS_FILE_TAG);
|
||||
ASSERT(m_handleShortcuts.IsValid(), ());
|
||||
|
|
Loading…
Add table
Reference in a new issue