#criterion #benchmark #polyglot

criterion-polyglot

为 criterion 提供各种非 Rust 编程语言基准方法的扩展特性

1 个不稳定版本

0.1.0 2022年12月7日

#328性能分析

MIT/Apache

55KB
964 代码行

crates.io docs.rs Maintenance

criterion-polyglot

Criterion.rs 提供各种非 Rust 编程语言基准方法的扩展。

当前支持的语言

  • Python 3
  • Ruby
  • Go
  • Zig
  • C

概要

在您的 crate 的 benches/benchmark.rs

use criterion::{black_box, criterion_group, criterion_main, Criterion};
use criterion_polyglot::{BenchSpec, CriterionPolyglotExt};

fn bench(c: &mut Criterion) {
    c.bench_function("in_rust", |b| b.iter(|| {
        /* do things in Rust */
    }));

    c.c_benchmark("in_c", BenchSpec::new(r#"
        // do things in C
    "#));

    c.go_benchmark("in_go", BenchSpec::new(r#"
        // Do things in Go
    "#).with_imports(r#"
        // Import the Go modules you need
    "#));
}

criterion_group!(benches, bench);
criterion_main!(benches);

描述

criterion_polyglot::CriterionPolyglotExt 是一个扩展特质,用于 criterion::Criterioncriterion::BenchmarkGroup,它提供了方法来同时基准测试非 Rust 编程语言和 Rust 代码,以便可以比较相同数据结构或算法的多语言实现的图表和性能统计。

criterion_polyglot 为所有支持的语言提供基准测试框架,可以填充所需的、计时代码片段(基准测试本身)和多种可选的、不计时的代码片段,这些代码片段用于初始化基准测试的数据或导入计时代码可能需要的模块/头文件。有关 criterion_polyglot::BenchSpec 的详细信息,请参阅文档。

入门指南

如果您之前还没有使用 Criterion.rs 对您的 Rust 代码进行基准测试,请按照他们的项目的 快速入门说明 进行操作,然后回到这里,按照上面的概要和 API 文档 添加多语言基准测试到您的项目。

依赖关系

~8–20MB
~269K SLoC