///|
/// Benchmark: BitmapAttrIndex set_attrs
test "bench/bitmap_set_attrs" (b : @bench.T) {
  b.bench(fn() {
    let index = BitmapAttrIndex::new()
    for i in 0..<100 {
      let attrs = @types.empty_attrs()
      attrs.set(
        "status",
        @types.String(if i % 2 == 0 { "active" } else { "inactive" }),
      )
      attrs.set("region", @types.String("region_" + (i % 5).to_string()))
      index.set_attrs(@types.VectorId::from_int(i), attrs)
    }
    b.keep(index.size())
  })
}

///|
/// Benchmark: BitmapAttrIndex eq lookup
test "bench/bitmap_eq_lookup" (b : @bench.T) {
  let index = BitmapAttrIndex::new()
  for i in 0..<1000 {
    let attrs = @types.empty_attrs()
    attrs.set(
      "status",
      @types.String(if i % 2 == 0 { "active" } else { "inactive" }),
    )
    index.set_attrs(@types.VectorId::from_int(i), attrs)
  }
  b.bench(fn() { b.keep(index.eq("status", @types.String("active")).length()) })
}