BitMagic-C++: sample11.cpp File Reference

BitMagic-C++

Functions | Variables
sample11.cpp File Reference

Example: bvector<> bit-counting techniques analysis. More...

`#include <iostream>`
`#include <random>`
`#include <memory>`
`#include "bm.h"`
`#include "bmalgo.h"`
`#include "bmtimer.h"`
Include dependency graph for sample11.cpp:

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

## Detailed Description

Example: bvector<> bit-counting techniques analysis.

Definition in file sample11.cpp.

## Function Documentation

## ◆ bv_count_and()

static void bv_count_and | ( | const bm::bvector<> & | bv | ) |
| static

count_range implemented via bm::count_and

this method can be used, when we need co compute multiple ranges in one call

Examples
  sample11.cpp.

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().

## ◆ bv_count_range()

static void bv_count_range | ( | const bm::bvector<> & | bv | ) |
| static

count_range() test

Examples
  sample11.cpp.

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().

## ◆ bv_count_range_acc()

static void bv_count_range_acc | ( | const bm::bvector<> & | bv | ) |
| static

count_range() test using pre-calculated blocks bit count

Examples
  sample11.cpp.

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().

## ◆ bv_count_test()

static void bv_count_test | ( | const bm::bvector<> & | bv | ) |
| static

simple population count for the whole vector

Examples
  sample11.cpp.

Definition at line 113 of file sample11.cpp.

References benchmark_count, bm::bvector< Alloc >::count(), and timing_map.

Referenced by main().

## ◆ bv_count_to_acc()

static void bv_count_to_acc | ( | const bm::bvector<> & | bv | ) |
| static

count_to() test using pre-calculated rank-select index

Examples
  sample11.cpp.

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().

## ◆ bv_count_to_range_acc()

static void bv_count_to_range_acc | ( | const bm::bvector<> & | bv | ) |
| static

count_range implemented via two count_to() calls using pre-calculated rank-select index

Examples
  sample11.cpp.

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().

## ◆ bv_counted_enumerator()

static void bv_counted_enumerator | ( | const bm::bvector<> & | bv | ) |
| 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

Examples
  sample11.cpp.

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().

## ◆ gen()

std::mt19937 gen | ( | rand_dev() |  | ) |

Examples
  sample11.cpp, and xsample05.cpp.

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().

## ◆ generate_bvector()

static void generate_bvector | ( | bm::bvector<> & | bv | ) |
| static

generate pseudo-random bit-vector, mix of blocks

Examples
  sample11.cpp.

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().

## ◆ main()

int main | ( | void |  | ) |

pre-heat CPU to minimize dynamic overclocking

Examples
  sample11.cpp.

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.

## ◆ pre_heat()

static bm::bvector ::size_type pre_heat | ( | const bm::bvector<> & | bv | ) |
| static

"pre-heat" CPU to minimize dynamic overclocking effects

Examples
  sample11.cpp.

Definition at line 96 of file sample11.cpp.

References benchmark_count, and bm::bvector< Alloc >::count().

Referenced by main().

## ◆ rand_dis()

std::uniform_int_distribution rand_dis | ( | 1 | ,
|  | int(vector_max) |
| ) |  |

Examples
  sample11.cpp, and xsample05.cpp.

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().

## Variable Documentation

## ◆ benchmark_count

const unsigned benchmark_count = 10000

Examples
  sample11.cpp.

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().

## ◆ rand_dev

std::random_device rand_dev

Examples
  sample11.cpp, and xsample05.cpp.

Definition at line 49 of file sample11.cpp.

Referenced by pick_benchmark_set().

## ◆ timing_map

bm::chrono_taker::duration_map_type timing_map

Examples
  sample11.cpp.

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().

## ◆ vector_max

unsigned vector_max = 400000000

Examples
  sample11.cpp.

Definition at line 47 of file sample11.cpp.

Referenced by generate_bvector().