mirror of
https://github.com/ModernRelay/omnigraph.git
synced 2026-07-15 03:22:11 +02:00
fix(bench): gate every unix item, not just main and the helpers include
Greptile follow-up on the previous cfg(unix) fix: ungated scenario fns still referenced the unix-only helpers module, failing name resolution on non-unix hosts (cfg_attr(allow) suppresses warnings, not resolution). Every item is now cfg(unix)-gated; the non-unix build compiles to the stub main alone.
This commit is contained in:
parent
dd67adccd9
commit
54dbf2f11c
1 changed files with 12 additions and 0 deletions
|
|
@ -42,6 +42,7 @@ use omnigraph::loader::LoadMode;
|
||||||
// Args
|
// Args
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
struct Args {
|
struct Args {
|
||||||
scenario: String,
|
scenario: String,
|
||||||
|
|
@ -62,6 +63,7 @@ struct Args {
|
||||||
child: bool,
|
child: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
impl Args {
|
impl Args {
|
||||||
fn parse() -> Self {
|
fn parse() -> Self {
|
||||||
let mut args = Args {
|
let mut args = Args {
|
||||||
|
|
@ -163,6 +165,7 @@ fn main() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
fn run_once(args: &Args, run: usize) -> serde_json::Value {
|
fn run_once(args: &Args, run: usize) -> serde_json::Value {
|
||||||
let exe = std::env::current_exe().expect("current_exe");
|
let exe = std::env::current_exe().expect("current_exe");
|
||||||
let mut child = std::process::Command::new(exe)
|
let mut child = std::process::Command::new(exe)
|
||||||
|
|
@ -217,6 +220,7 @@ fn run_once(args: &Args, run: usize) -> serde_json::Value {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
/// Reap `pid` with `wait4` and return (exit code or -signal, peak RSS bytes).
|
/// Reap `pid` with `wait4` and return (exit code or -signal, peak RSS bytes).
|
||||||
/// `ru_maxrss` is bytes on macOS and KiB on Linux.
|
/// `ru_maxrss` is bytes on macOS and KiB on Linux.
|
||||||
fn wait4_rusage(pid: i32) -> (i64, u64) {
|
fn wait4_rusage(pid: i32) -> (i64, u64) {
|
||||||
|
|
@ -249,6 +253,7 @@ fn wait4_rusage(pid: i32) -> (i64, u64) {
|
||||||
// Child: apply the cap, build a runtime, run the scenario, print metrics JSON
|
// Child: apply the cap, build a runtime, run the scenario, print metrics JSON
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
fn run_child(args: &Args) {
|
fn run_child(args: &Args) {
|
||||||
if let Some(cap_mb) = args.memory_cap_mb {
|
if let Some(cap_mb) = args.memory_cap_mb {
|
||||||
let cap = libc::rlimit {
|
let cap = libc::rlimit {
|
||||||
|
|
@ -286,6 +291,7 @@ fn run_child(args: &Args) {
|
||||||
// copy — those fns are private to that test binary)
|
// copy — those fns are private to that test binary)
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
fn fnv1a64(input: &str) -> u64 {
|
fn fnv1a64(input: &str) -> u64 {
|
||||||
let mut hash: u64 = 0xcbf29ce484222325;
|
let mut hash: u64 = 0xcbf29ce484222325;
|
||||||
for byte in input.as_bytes() {
|
for byte in input.as_bytes() {
|
||||||
|
|
@ -295,6 +301,7 @@ fn fnv1a64(input: &str) -> u64 {
|
||||||
hash
|
hash
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
fn xorshift64(state: &mut u64) -> u64 {
|
fn xorshift64(state: &mut u64) -> u64 {
|
||||||
let mut x = *state;
|
let mut x = *state;
|
||||||
x ^= x << 13;
|
x ^= x << 13;
|
||||||
|
|
@ -304,6 +311,7 @@ fn xorshift64(state: &mut u64) -> u64 {
|
||||||
x
|
x
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
/// Unit-norm D-dim vector seeded by (seed, slug). `pole` biases the first
|
/// Unit-norm D-dim vector seeded by (seed, slug). `pole` biases the first
|
||||||
/// component: +1.0 clusters vectors near e1, -1.0 near -e1, 0.0 uniform-ish —
|
/// component: +1.0 clusters vectors near e1, -1.0 near -e1, 0.0 uniform-ish —
|
||||||
/// the lever the prefilter scenario uses to place matching rows far from the
|
/// the lever the prefilter scenario uses to place matching rows far from the
|
||||||
|
|
@ -329,6 +337,7 @@ fn seeded_vector(seed: u64, slug: &str, dims: usize, pole: f32) -> Vec<f32> {
|
||||||
v
|
v
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
fn push_vector_json(out: &mut String, v: &[f32]) {
|
fn push_vector_json(out: &mut String, v: &[f32]) {
|
||||||
out.push('[');
|
out.push('[');
|
||||||
for (i, x) in v.iter().enumerate() {
|
for (i, x) in v.iter().enumerate() {
|
||||||
|
|
@ -344,6 +353,7 @@ fn push_vector_json(out: &mut String, v: &[f32]) {
|
||||||
// Scenario: merge-all-changed
|
// Scenario: merge-all-changed
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
/// The merge-memory scenario: an embedding-bearing table where a branch
|
/// The merge-memory scenario: an embedding-bearing table where a branch
|
||||||
/// changed EVERY row's vector (the re-embed-the-corpus workflow), merged back
|
/// changed EVERY row's vector (the re-embed-the-corpus workflow), merged back
|
||||||
/// into main. Measures the changed-delta materialization cost of
|
/// into main. Measures the changed-delta materialization cost of
|
||||||
|
|
@ -409,6 +419,7 @@ async fn merge_all_changed(args: &Args) -> serde_json::Value {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
async fn load_vector_rows(
|
async fn load_vector_rows(
|
||||||
db: &Omnigraph,
|
db: &Omnigraph,
|
||||||
branch: &str,
|
branch: &str,
|
||||||
|
|
@ -436,6 +447,7 @@ async fn load_vector_rows(
|
||||||
// Scenario: nearest-prefilter
|
// Scenario: nearest-prefilter
|
||||||
// ---------------------------------------------------------------------------
|
// ---------------------------------------------------------------------------
|
||||||
|
|
||||||
|
#[cfg(unix)]
|
||||||
/// The filtered-ANN scenario: `selectivity` fraction of rows match
|
/// The filtered-ANN scenario: `selectivity` fraction of rows match
|
||||||
/// `status = "hit"` but sit FAR from the query vector, while all non-matching
|
/// `status = "hit"` but sit FAR from the query vector, while all non-matching
|
||||||
/// rows cluster AROUND it — so a post-filtered ANN top-k (the current Lance
|
/// rows cluster AROUND it — so a post-filtered ANN top-k (the current Lance
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue