void profile_decoding(const char* index_filename, double p) { std::default_random_engine rng(1729); std::uniform_real_distribution<double> dist01(0.0, 1.0); IndexType index; logger() << "Loading index from " << index_filename << std::endl; boost::iostreams::mapped_file_source m(index_filename); succinct::mapper::map(index, m); std::vector<uint32_t> values; for (size_t l = 0; l < index.size(); ++l) { if (l % 1000000 == 0) { logger() << l << " lists processed" << std::endl; } auto blocks = index[l].get_blocks(); for (auto const& block: blocks) { // only measure full blocks if (block.size == mixed_block::block_size && dist01(rng) < p) { block.decode_doc_gaps(values); profile_block(values, block.doc_gaps_universe); block.decode_freqs(values); profile_block(values, uint32_t(-1)); } } } logger() << index.size() << " lists processed" << std::endl; }
MultidimensionalFor::MultidimensionalFor(const IndexType &to): m_dimension(to.size()), m_from(m_dimension, 0), m_to(to), m_position(m_dimension) { goToBegin(); }