fn read_group_pre_computed_groups(c: &mut Criterion, row_group: &RowGroup, rng: &mut ThreadRng) {
    // This benchmark fixes the number of rows in the  `RowGroup` (500K), and
    // varies the cardinality of the group keys.
    benchmark_read_group_vary_cardinality(
        c,
        "row_group_read_group_pre_computed_groups_vary_cardinality",
        row_group,
        &Predicate::default(),
        // grouping columns and expected cardinality
        vec![
            (vec!["env"], 2),
            (vec!["env", "data_centre"], 20),
            (vec!["data_centre", "cluster"], 200),
            (vec!["cluster", "node_id"], 2000),
        ]
        .as_slice(),
    );

    // This benchmark fixes the cardinality of the group keys and varies the
    // number of columns grouped to produce that group key cardinality.
    benchmark_read_group_vary_group_cols(
        c,
        "row_group_read_group_pre_computed_groups_vary_columns",
        row_group,
        &Predicate::default(),
        // number of cols to group on and expected cardinality
        vec![
            (vec!["cluster"], 200),
            (vec!["data_centre", "cluster"], 200),
            (vec!["env", "data_centre", "cluster"], 200),
        ]
        .as_slice(),
    );

    // This benchmark fixes the cardinality of the group keys and the number of
    // columns grouped on. It then varies the number of rows in the `RowGroup`
    // to be processed.
    benchmark_read_group_vary_rows(
        c,
        "row_group_read_group_pre_computed_groups_vary_rows",
        &[250_000, 500_000, 750_000, 1_000_000], // `RowGroup` row sizes to vary
        &Predicate::default(),
        (vec!["data_centre", "cluster"], 200),
        rng,
    );
}
// These benchmarks track the performance of read_group when it is able to use
// the per-group bitsets provided by RLE-encoded columns. These code-path are
// hit due to the encoding of the grouping-columns and the lack of predicates on
// the query.
These benchmarks track the performance of read_group when it is able to use
the per-group bitsets provided by RLE-encoded columns. These code-path are
hit due to the encoding of the grouping-columns and the lack of predicates on
the query.
These benchmarks track the performance of read_group when it is able to use the per - group bitsets provided by RLE - encoded columns . These code - path are hit due to the encoding of the grouping - columns and the lack of predicates on the query .
fn read_group_pre_computed_groups(c: &mut Criterion, row_group: &RowGroup, rng: &mut ThreadRng) {
    // This benchmark fixes the number of rows in the  `RowGroup` (500K), and
    // varies the cardinality of the group keys.
    benchmark_read_group_vary_cardinality(
        c,
        "row_group_read_group_pre_computed_groups_vary_cardinality",
        row_group,
        &Predicate::default(),
        // grouping columns and expected cardinality
        vec![
            (vec!["env"], 2),
            (vec!["env", "data_centre"], 20),
            (vec!["data_centre", "cluster"], 200),
            (vec!["cluster", "node_id"], 2000),
        ]
        .as_slice(),
    );
    // This benchmark fixes the cardinality of the group keys and varies the
    // number of columns grouped to produce that group key cardinality.
    benchmark_read_group_vary_group_cols(
        c,
        "row_group_read_group_pre_computed_groups_vary_columns",
        row_group,
        &Predicate::default(),
        // number of cols to group on and expected cardinality
        vec![
            (vec!["cluster"], 200),
            (vec!["data_centre", "cluster"], 200),
            (vec!["env", "data_centre", "cluster"], 200),
        ]
        .as_slice(),
    );
    // This benchmark fixes the cardinality of the group keys and the number of
    // columns grouped on. It then varies the number of rows in the `RowGroup`
    // to be processed.
    benchmark_read_group_vary_rows(
        c,
        "row_group_read_group_pre_computed_groups_vary_rows",
        &[250_000, 500_000, 750_000, 1_000_000], // `RowGroup` row sizes to vary
        &Predicate::default(),
        (vec!["data_centre", "cluster"], 200),
        rng,
    );
}
fn read_group_pre_computed_groups ( c : & mut Criterion , row_group : & RowGroup , rng : & mut ThreadRng ) { // This benchmark fixes the number of rows in the  `RowGroup` (500K), and // varies the cardinality of the group keys. benchmark_read_group_vary_cardinality ( c , " " , row_group , & Predicate :: default ( ) , // grouping columns and expected cardinality vec ! [ ( vec [ " " ] 2 ) ( vec [ " " " " ] 20 ) ( vec [ " " " " ] 200 ) ( vec [ " " " " ] 2000 ) ] . as_slice ( ) , ) ; // This benchmark fixes the cardinality of the group keys and varies the // number of columns grouped to produce that group key cardinality. benchmark_read_group_vary_group_cols ( c , " " , row_group , & Predicate :: default ( ) , // number of cols to group on and expected cardinality vec ! [ ( vec [ " " ] 200 ) ( vec [ " " " " ] 200 ) ( vec [ " " " " " " ] 200 ) ] . as_slice ( ) , ) ; // This benchmark fixes the cardinality of the group keys and the number of // columns grouped on. It then varies the number of rows in the `RowGroup` // to be processed. benchmark_read_group_vary_rows ( c , " " , & [ 250_000 , 500_000 , 750_000 , 1_000_000 ] , // `RowGroup` row sizes to vary & Predicate :: default ( ) , ( vec ! [ " " " " ] , 200 ) , rng , ) ; }
These benchmarks track the performance of read_group when it is able to use
the per-group bitsets provided by RLE-encoded columns.
These benchmarks track the performance of read_group when it is able to use the per - group bitsets provided by RLE - encoded columns .
c
&mut Criterion
row_group
&RowGroup
rng
&mut ThreadRng
c
&mut Criterion
row_group
&RowGroup
rng
&mut ThreadRng