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 "bmundef.h"
Include dependency graph for sample11.cpp:

Go to the source code of this file.

Functions

std::mt19937 gen (rand_dev())
  More...
 
std::uniform_int_distribution rand_dis (1, int(vector_max))
  More...
 
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)
  More...
 

Variables

bm::chrono_taker ::duration_map_type timing_map
  More...
 
const unsigned benchmark_count = 10000
  More...
 
unsigned vector_max = 400000000
  More...
 
std::random_device rand_dev
  More...
 

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 239 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 133 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 154 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 115 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 180 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 206 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 269 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()  )

◆ generate_bvector()

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

◆ main()

int main ( void  )

◆ 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 98 of file sample11.cpp.

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

Referenced by main().

◆ rand_dis()

std::uniform_int_distribution rand_dis ( ,
int(vector_max  
)