64 const unsigned max_coll = 50000;
68 for (
unsigned i = 10; i < max_coll; i += rand() % 3)
71 str_vec.emplace_back(str);
76 std::random_device rd;
78 std::shuffle(str_vec.begin(), str_vec.end(), g);
88 vector<string> str_vec;
90 std::sort(str_vec.begin(), str_vec.end());
101 for (
auto str : str_vec)
107 size_t str_size = str.size() +
sizeof(str);
108 vect_size += str_size;
120 cout <<
"STL vector<string> approx.memory consumption:"
121 << vect_size << endl;
129 cout <<
"Used memory: " << st.
memory_used << std::endl;
143 cout <<
"Used memory after remap and optimization: "
160 for (
auto str : str_vec)
171 assert(str_sv1.
is_ro());
172 bool eq = str_sv1.
equal(str_sv);
176 cout <<
"Used memory after remap / optimization / freeze: "
193 for (
auto str : str_vec)
202 cout <<
"size2=" << str_sv2.
size() << endl;
213 std::string fname =
"test.sv";
219 std::ofstream fout(fname.c_str(), std::ios::binary);
224 const char* buf = (
char*)sv_lay.
buf();
225 fout.write(buf, (
unsigned)sv_lay.
size());
232 cout <<
"Saved size: " << sv_lay.
size() << endl;
236 catch(std::exception& ex)
238 std::cerr << ex.what() << std::endl;
Compressed bit-vector bvector<> container, set algebraic methods, traversal iterators.
#define BM_DECLARE_TEMP_BLOCK(x)
Serialization for sparse_vector<>
string sparse vector based on bit-transposed matrix
pre-processor un-defines to avoid global space pollution (internal)
Bitvector Bit-vector container with runtime compression of bits.
Back insert iterator implements buffered insert, faster than generic access assignment.
void flush()
flush the accumulated buffer.
void set_remap(bool flag) BMNOEXCEPT
Method to configure back inserter to collect statistics on optimal character codes.
succinct sparse vector for strings with compression using bit-slicing ( transposition) method
bool is_ro() const BMNOEXCEPT
Returns true if vector is read-only.
void optimize(bm::word_t *temp_block=0, typename bvector_type::optmode opt_mode=bvector_type::opt_compress, typename str_sparse_vector< CharType, BV, STR_SIZE >::statistics *stat=0)
run memory optimization for all vector planes
void calc_stat(struct str_sparse_vector< CharType, BV, STR_SIZE >::statistics *st) const BMNOEXCEPT
Calculates memory statistics.
bool equal(const str_sparse_vector< CharType, BV, STR_SIZE > &sv, bm::null_support null_able=bm::use_null) const BMNOEXCEPT
check if another sparse vector has the same content and size
void remap_from(const str_sparse_vector &str_sv, octet_freq_matrix_type *omatrix=0)
Build remapping profile and load content from another sparse vector Remapped vector likely saves memo...
size_type size() const
return size of the vector
void freeze()
Turn sparse vector into immutable mode Read-only (immutable) vector uses less memory and allows faste...
back_insert_iterator get_back_inserter()
Provide back insert iterator Back insert iterator implements buffered insertion, which is faster,...
void sparse_vector_serialize(const SV &sv, sparse_vector_serial_layout< SV > &sv_layout, bm::word_t *temp_block=0)
Serialize sparse vector into a memory buffer(s) structure.
@ COPY_RTABLES
copy remap tables only (without data)
bm::str_sparse_vector< char, bvector_type, 32 > str_sv_type
static void generate_string_set(vector< string > &str_vec)
size_t memory_used
memory usage for all blocks and service tables
layout class for serialization buffer structure
size_t size() const BMNOEXCEPT
return current serialized size
const unsigned char * buf() const BMNOEXCEPT
Return serialization buffer pointer.