diff --git a/generator/intermediate_data.cpp b/generator/intermediate_data.cpp index 4f84b14..42830d7 100644 --- a/generator/intermediate_data.cpp +++ b/generator/intermediate_data.cpp @@ -18,7 +18,7 @@ namespace cache { namespace { -size_t const kFlushCount = 1024; +size_t const kFlushCount = 10'000'000; double const kValueOrder = 1e7; string const kShortExtension = ".short"; @@ -321,6 +321,7 @@ bool IndexFileReader::GetValueByKey(Key key, Value & value) const IndexFileWriter::IndexFileWriter(string const & name) : m_fileWriter(name.c_str()) { + m_elements.reserve(kFlushCount); } void IndexFileWriter::WriteAll() @@ -356,7 +357,10 @@ OSMElementCacheReader::OSMElementCacheReader(string const & name, bool preload, // OSMElementCacheWriter --------------------------------------------------------------------------- OSMElementCacheWriter::OSMElementCacheWriter(string const & name, bool preload) - : m_fileWriter(name), m_offsets(name + OFFSET_EXT), m_name(name), m_preload(preload) + : m_fileWriter(name, FileWriter::OP_WRITE_TRUNCATE, 10 * 1024 * 1024 /* bufferSize */) + , m_offsets(name + OFFSET_EXT) + , m_name(name) + , m_preload(preload) { } diff --git a/generator/intermediate_data.hpp b/generator/intermediate_data.hpp index 0b3d601..d1c5edc 100644 --- a/generator/intermediate_data.hpp +++ b/generator/intermediate_data.hpp @@ -3,6 +3,7 @@ #include "generator/generate_info.hpp" #include "generator/intermediate_elements.hpp" +#include "coding/buffered_file_writer.hpp" #include "coding/file_reader.hpp" #include "coding/file_writer.hpp" #include "coding/mmap_reader.hpp" @@ -189,7 +190,7 @@ public: void SaveOffsets(); protected: - FileWriter m_fileWriter; + BufferedFileWriter m_fileWriter; IndexFileWriter m_offsets; std::string m_name; std::vector m_data;