honeycomb_benches/
lib.rs

1//! # honeycomb-benches
2//!
3//! This crate contains all benchmarks of the project. It also contains simple binaries used to
4//! profile and further optimize the implementation.
5//!
6//! ## Binary
7//!
8//! The package provides a single binary, `hc-bench`, which exposes several benchmarks as
9//! subcommands. For details on options and arguments, run:
10//!
11//! ```sh
12//! cargo run --bin hc-bench -- --help
13//! ```
14//!
15//! Benchmarks are described in the documentation of their respective modules.
16//!
17//! ## Features
18//!
19//! Optional features can be enabled to affect implementation:
20//!
21//! - `bind-threads` -- enabled by default -- uses `hwlocality` to bind threads to physical cores,
22//! - `jemalloc` -- uses `tikv-jemallocator` to replace the default allocator,
23//! - `profiling` -- enable `perf` fifo interactions to allow per-section profiling,
24//! - `_single_precision` -- compile cargo benches (not the binary) to use `f32` instead of `f64`.
25//!
26//! ## Available benchmarks
27//!
28//! ### Criterion-based
29//!
30//! - `builder` - grid building routines at fixed size
31//! - `builder-grid-size` - grid building routines over a range of grid sizes
32//! - `fetch_icells` - `CMap2::iter_<CELL>` methods
33//! - `grisubal` - grisubal kernel with a fixed size grid
34//! - `grisubal-grid-size` - grisubal kernel over a range of grid granularity
35//! - `triangulate-quads` - triangulate all cells of a mixed-mesh
36//!
37//! ### Iai-callgrind-based
38//!
39//! - `prof-dim2-basic` - `CMap2` basic operations benchmarks
40//! - `prof-dim2-build` - `CMap2` constructor & building functions benchmarks
41//! - `prof-dim2-sewing-unsewing` - `CMap2` (un)sewing & (un)linking methods benchmarks
42
43// --- enable doc_auto_cfg feature if compiling in nightly
44#![allow(unexpected_cfgs)]
45#![cfg_attr(nightly, feature(doc_auto_cfg))]
46
47#[doc(hidden)]
48pub mod cli;
49pub mod cut_edges;
50pub mod grid_gen;
51pub mod grisubal;
52pub mod remesh;
53pub mod shift;
54#[doc(hidden)]
55pub mod utils;