|
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 More... | |
| static bm::bvector ::size_type | pre_heat (const bm::bvector<> &bv) |
| "pre-heat" CPU to minimize dynamic overclocking effects More... | |
| static void | bv_count_test (const bm::bvector<> &bv) |
| simple population count for the whole vector More... | |
| static void | bv_count_range (const bm::bvector<> &bv) |
| count_range() test More... | |
| static void | bv_count_range_acc (const bm::bvector<> &bv) |
| count_range() test using pre-calculated blocks bit count More... | |
| static void | bv_count_to_acc (const bm::bvector<> &bv) |
| count_to() test using pre-calculated rank-select index More... | |
| 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 More... | |
| static void | bv_count_and (const bm::bvector<> &bv) |
| count_range implemented via bm::count_and More... | |
| static void | bv_counted_enumerator (const bm::bvector<> &bv) |
| count_to implemented via bm::bvector<>::counted_enumerator More... | |
| 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(), 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(), 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(), and main().
| unsigned vector_max = 400000000 |
1.8.17