[osrm][routing] Replace succinct gamma vector by elias_fano_compressed_list (minimize routing data)

This commit is contained in:
Denis Koronchik 2014-09-18 19:39:21 +03:00 committed by Alex Zolotarev
parent 38a45b3eb7
commit 2dc7a2cb3a
2 changed files with 8 additions and 17 deletions

View file

@ -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);

View file

@ -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(), ());