mirror of
https://github.com/quickwit-oss/tantivy.git
synced 2026-01-03 15:52:55 +00:00
@@ -4,7 +4,7 @@ use std::fmt::{Display, Formatter};
|
|||||||
use binggan::{black_box, InputGroup};
|
use binggan::{black_box, InputGroup};
|
||||||
use tantivy_columnar::*;
|
use tantivy_columnar::*;
|
||||||
|
|
||||||
enum Card {
|
pub enum Card {
|
||||||
MultiSparse,
|
MultiSparse,
|
||||||
Multi,
|
Multi,
|
||||||
Sparse,
|
Sparse,
|
||||||
@@ -25,7 +25,7 @@ impl Display for Card {
|
|||||||
|
|
||||||
const NUM_DOCS: u32 = 2_000_000;
|
const NUM_DOCS: u32 = 2_000_000;
|
||||||
|
|
||||||
fn generate_columnar(card: Card, num_docs: u32) -> Column {
|
pub fn generate_columnar(card: Card, num_docs: u32) -> ColumnarReader {
|
||||||
use tantivy_columnar::ColumnarWriter;
|
use tantivy_columnar::ColumnarWriter;
|
||||||
|
|
||||||
let mut columnar_writer = ColumnarWriter::default();
|
let mut columnar_writer = ColumnarWriter::default();
|
||||||
@@ -62,18 +62,26 @@ fn generate_columnar(card: Card, num_docs: u32) -> Column {
|
|||||||
|
|
||||||
let mut wrt: Vec<u8> = Vec::new();
|
let mut wrt: Vec<u8> = Vec::new();
|
||||||
columnar_writer.serialize(num_docs, &mut wrt).unwrap();
|
columnar_writer.serialize(num_docs, &mut wrt).unwrap();
|
||||||
|
|
||||||
let reader = ColumnarReader::open(wrt).unwrap();
|
let reader = ColumnarReader::open(wrt).unwrap();
|
||||||
|
reader
|
||||||
|
}
|
||||||
|
|
||||||
|
pub fn generate_columnar_and_open(card: Card, num_docs: u32) -> Column {
|
||||||
|
let reader = generate_columnar(card, num_docs);
|
||||||
reader.read_columns("price").unwrap()[0]
|
reader.read_columns("price").unwrap()[0]
|
||||||
.open_u64_lenient()
|
.open_u64_lenient()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
}
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut inputs = Vec::new();
|
let mut inputs = Vec::new();
|
||||||
|
|
||||||
let mut add_card = |card1: Card| {
|
let mut add_card = |card1: Card| {
|
||||||
inputs.push((format!("{card1}"), generate_columnar(card1, NUM_DOCS)));
|
inputs.push((
|
||||||
|
format!("{card1}"),
|
||||||
|
generate_columnar_and_open(card1, NUM_DOCS),
|
||||||
|
));
|
||||||
};
|
};
|
||||||
|
|
||||||
add_card(Card::MultiSparse);
|
add_card(Card::MultiSparse);
|
||||||
|
|||||||
@@ -1,59 +1,11 @@
|
|||||||
use core::fmt;
|
mod bench_access;
|
||||||
use std::fmt::{Display, Formatter};
|
|
||||||
|
|
||||||
|
use bench_access::{generate_columnar, Card};
|
||||||
use binggan::{black_box, BenchRunner};
|
use binggan::{black_box, BenchRunner};
|
||||||
use tantivy_columnar::*;
|
use tantivy_columnar::*;
|
||||||
|
|
||||||
enum Card {
|
|
||||||
Multi,
|
|
||||||
Sparse,
|
|
||||||
Dense,
|
|
||||||
}
|
|
||||||
impl Display for Card {
|
|
||||||
fn fmt(&self, f: &mut Formatter) -> fmt::Result {
|
|
||||||
match self {
|
|
||||||
Card::Multi => write!(f, "multi"),
|
|
||||||
Card::Sparse => write!(f, "sparse"),
|
|
||||||
Card::Dense => write!(f, "dense"),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
const NUM_DOCS: u32 = 100_000;
|
const NUM_DOCS: u32 = 100_000;
|
||||||
|
|
||||||
fn generate_columnar(card: Card, num_docs: u32) -> ColumnarReader {
|
|
||||||
use tantivy_columnar::ColumnarWriter;
|
|
||||||
|
|
||||||
let mut columnar_writer = ColumnarWriter::default();
|
|
||||||
|
|
||||||
match card {
|
|
||||||
Card::Multi => {
|
|
||||||
columnar_writer.record_numerical(0, "price", 10u64);
|
|
||||||
columnar_writer.record_numerical(0, "price", 10u64);
|
|
||||||
}
|
|
||||||
_ => {}
|
|
||||||
}
|
|
||||||
|
|
||||||
for i in 0..num_docs {
|
|
||||||
match card {
|
|
||||||
Card::Multi | Card::Sparse => {
|
|
||||||
if i % 13 == 0 {
|
|
||||||
columnar_writer.record_numerical(i, "price", i as u64);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Card::Dense => {
|
|
||||||
if i % 12 == 0 {
|
|
||||||
columnar_writer.record_numerical(i, "price", i as u64);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let mut wrt: Vec<u8> = Vec::new();
|
|
||||||
columnar_writer.serialize(num_docs, &mut wrt).unwrap();
|
|
||||||
|
|
||||||
ColumnarReader::open(wrt).unwrap()
|
|
||||||
}
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let mut inputs = Vec::new();
|
let mut inputs = Vec::new();
|
||||||
|
|
||||||
@@ -68,9 +20,12 @@ fn main() {
|
|||||||
};
|
};
|
||||||
|
|
||||||
add_combo(Card::Multi, Card::Multi);
|
add_combo(Card::Multi, Card::Multi);
|
||||||
|
add_combo(Card::MultiSparse, Card::MultiSparse);
|
||||||
add_combo(Card::Dense, Card::Dense);
|
add_combo(Card::Dense, Card::Dense);
|
||||||
add_combo(Card::Sparse, Card::Sparse);
|
add_combo(Card::Sparse, Card::Sparse);
|
||||||
add_combo(Card::Sparse, Card::Dense);
|
add_combo(Card::Sparse, Card::Dense);
|
||||||
|
add_combo(Card::MultiSparse, Card::Dense);
|
||||||
|
add_combo(Card::MultiSparse, Card::Sparse);
|
||||||
add_combo(Card::Multi, Card::Dense);
|
add_combo(Card::Multi, Card::Dense);
|
||||||
add_combo(Card::Multi, Card::Sparse);
|
add_combo(Card::Multi, Card::Sparse);
|
||||||
|
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ fn generate_columnar(num_docs: u32) -> Vec<u8> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
let mut wrt: Vec<u8> = Vec::new();
|
let mut wrt: Vec<u8> = Vec::new();
|
||||||
columnar_writer.serialize(num_docs, None, &mut wrt).unwrap();
|
columnar_writer.serialize(num_docs, &mut wrt).unwrap();
|
||||||
|
|
||||||
wrt
|
wrt
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user