BitMagic-C++
|
Example: bvector<> bit-counting techniques analysis. More...
#include <iostream>
#include <random>
#include <memory>
#include "bm.h"
#include "bmalgo.h"
#include "bmtimer.h"
Go to the source code of this file.
Functions | |
std::mt19937 | gen (rand_dev()) |
std::uniform_int_distribution | rand_dis (1, int(vector_max)) |
static void | generate_bvector (bm::bvector<> &bv) |
generate pseudo-random bit-vector, mix of blocks | |
static bm::bvector ::size_type | pre_heat (const bm::bvector<> &bv) |
"pre-heat" CPU to minimize dynamic overclocking effects | |
static void | bv_count_test (const bm::bvector<> &bv) |
simple population count for the whole vector | |
static void | bv_count_range (const bm::bvector<> &bv) |
count_range() test | |
static void | bv_count_range_acc (const bm::bvector<> &bv) |
count_range() test using pre-calculated blocks bit count | |
static void | bv_count_to_acc (const bm::bvector<> &bv) |
count_to() test using pre-calculated rank-select index | |
static void | bv_count_to_range_acc (const bm::bvector<> &bv) |
count_range implemented via two count_to() calls using pre-calculated rank-select index | |
static void | bv_count_and (const bm::bvector<> &bv) |
count_range implemented via bm::count_and | |
static void | bv_counted_enumerator (const bm::bvector<> &bv) |
count_to implemented via bm::bvector<>::counted_enumerator | |
int | main (void) |
Variables | |
bm::chrono_taker::duration_map_type | timing_map |
const unsigned | benchmark_count = 10000 |
unsigned | vector_max = 400000000 |
std::random_device | rand_dev |
Example: bvector<> bit-counting techniques analysis.
Definition in file sample11.cpp.
|
static |
count_range implemented via bm::count_and
this method can be used, when we need co compute multiple ranges in one call
Definition at line 237 of file sample11.cpp.
References benchmark_count, bm::BM_GAP, bm::bvector< Alloc >::clear(), bm::count_and(), gen(), rand_dis(), bm::bvector< Alloc >::set_range(), and timing_map.
Referenced by main().
|
static |
count_range() test
Definition at line 131 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::count_range(), gen(), rand_dis(), and timing_map.
Referenced by main().
|
static |
count_range() test using pre-calculated blocks bit count
Definition at line 152 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::build_rs_index(), bm::bvector< Alloc >::count_range(), gen(), rand_dis(), and timing_map.
Referenced by main().
|
static |
simple population count for the whole vector
Definition at line 113 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::count(), and timing_map.
Referenced by main().
|
static |
count_to() test using pre-calculated rank-select index
Definition at line 178 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::build_rs_index(), bm::bvector< Alloc >::count_to(), gen(), rand_dis(), and timing_map.
Referenced by main().
|
static |
count_range implemented via two count_to() calls using pre-calculated rank-select index
Definition at line 204 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::build_rs_index(), bm::bvector< Alloc >::count_to(), gen(), rand_dis(), and timing_map.
Referenced by main().
|
static |
count_to implemented via bm::bvector<>::counted_enumerator
Counted enumerator is an iterator automata, which counts the running population count along the iteration sequence
Definition at line 267 of file sample11.cpp.
References benchmark_count, bm::bvector< Alloc >::counted_enumerator::count(), bm::bvector< Alloc >::first(), gen(), rand_dis(), timing_map, and bm::bvector< Alloc >::iterator_base::valid().
Referenced by main().
std::mt19937 gen | ( | rand_dev() | ) |
Referenced by bv_count_and(), bv_count_range(), bv_count_range_acc(), bv_count_to_acc(), bv_count_to_range_acc(), bv_counted_enumerator(), main(), and pick_benchmark_set().
|
static |
generate pseudo-random bit-vector, mix of blocks
Definition at line 57 of file sample11.cpp.
References bm::bv_statistics::bit_blocks, BM_DECLARE_TEMP_BLOCK, bm::bvector< Alloc >::calc_stat(), bm::bv_statistics::gap_blocks, bm::bvector< Alloc >::optimize(), bm::bvector< Alloc >::set(), bm::bvector< Alloc >::set_range(), and vector_max.
Referenced by main().
int main | ( | void | ) |
pre-heat CPU to minimize dynamic overclocking
Definition at line 292 of file sample11.cpp.
References bv_count_and(), bv_count_range(), bv_count_range_acc(), bv_count_test(), bv_count_to_acc(), bv_count_to_range_acc(), bv_counted_enumerator(), bm::chrono_taker::ct_ops_per_sec, generate_bvector(), pre_heat(), bm::chrono_taker::print_duration_map(), and timing_map.
|
static |
"pre-heat" CPU to minimize dynamic overclocking effects
Definition at line 96 of file sample11.cpp.
References benchmark_count, and bm::bvector< Alloc >::count().
Referenced by main().
std::uniform_int_distribution rand_dis | ( | 1 | , |
int(vector_max) | |||
) |
Referenced by bv_count_and(), bv_count_range(), bv_count_range_acc(), bv_count_to_acc(), bv_count_to_range_acc(), bv_counted_enumerator(), main(), and pick_benchmark_set().
const unsigned benchmark_count = 10000 |
Definition at line 46 of file sample11.cpp.
Referenced by bv_count_and(), bv_count_range(), bv_count_range_acc(), bv_count_test(), bv_count_to_acc(), bv_count_to_range_acc(), bv_counted_enumerator(), and pre_heat().
std::random_device rand_dev |
Definition at line 49 of file sample11.cpp.
Referenced by pick_benchmark_set().
bm::chrono_taker::duration_map_type timing_map |
Definition at line 44 of file sample11.cpp.
Referenced by bv_count_and(), bv_count_range(), bv_count_range_acc(), bv_count_test(), bv_count_to_acc(), bv_count_to_range_acc(), bv_counted_enumerator(), load_snp_report(), main(), main(), run_benchmark(), speed_test_bv_index(), speed_test_bvs_index(), speed_test_sv_index(), and speed_test_vect_index().
unsigned vector_max = 400000000 |
Definition at line 47 of file sample11.cpp.
Referenced by generate_bvector().