diff options
| author | 魏曹先生 <1992414357@qq.com> | 2026-08-20 03:38:10 +0800 |
|---|---|---|
| committer | 魏曹先生 <1992414357@qq.com> | 2026-08-20 03:38:10 +0800 |
| commit | 5678e0ba37ce2c5c8161f0d48505e7993967e30c (patch) | |
| tree | e6035d2e8bf4139e634052fef8c0c48d4c97434a /mingling/src | |
| parent | ec9edc294fd5e7e29977fc7b0e6fb953422bc0e2 (diff) | |
feat: add dispatch strategy features with auto-selection and benchmark
support
Add `dispatch_linear`, `dispatch_tree`, and `dispatch_phf` as mutually
exclusive features for selecting the command dispatch strategy. When no
strategy feature is enabled, an auto-selection heuristic picks the
optimal strategy based on command table characteristics (size, name
length, nesting depth).
Add the `bench_support` feature to compile all three generators for the
benchmark harness, and introduce `bench_cell!` to generate benchmark
cells comparing strategies.
The PHF generator uses a CHD minimal perfect hash for O(1) lookup
independent of table size, while the trie generator was refactored to
use a shared fallback method, keeping code size linear in table size.
Diffstat (limited to 'mingling/src')
| -rw-r--r-- | mingling/src/features.rs | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/mingling/src/features.rs b/mingling/src/features.rs index 8a3ce75..3d9a382 100644 --- a/mingling/src/features.rs +++ b/mingling/src/features.rs @@ -86,6 +86,28 @@ pub const MINGLING_DEFAULT: bool = false; #[cfg(feature = "default")] #[allow(unused)] pub const MINGLING_DEFAULT: bool = true; +/// Whether the `dispatch_linear` feature is enabled +/// Current: `disabled` +#[cfg(not(feature = "dispatch_linear"))] +#[allow(unused)] +pub const MINGLING_DISPATCH_LINEAR: bool = false; + +/// Whether the `dispatch_linear` feature is enabled +/// Current: `enabled` +#[cfg(feature = "dispatch_linear")] +#[allow(unused)] +pub const MINGLING_DISPATCH_LINEAR: bool = true; +/// Whether the `dispatch_phf` feature is enabled +/// Current: `disabled` +#[cfg(not(feature = "dispatch_phf"))] +#[allow(unused)] +pub const MINGLING_DISPATCH_PHF: bool = false; + +/// Whether the `dispatch_phf` feature is enabled +/// Current: `enabled` +#[cfg(feature = "dispatch_phf")] +#[allow(unused)] +pub const MINGLING_DISPATCH_PHF: bool = true; /// Whether the `dispatch_tree` feature is enabled /// Current: `disabled` #[cfg(not(feature = "dispatch_tree"))] |
