Rust创建基准测试bench

打开终端(或命令提示符)。

导航到父目录。

将 Rust 编译器切换到 nightly 版本:

bash 复制代码
rustup default nightly

在该目录下运行 cargo init 命令来创建一个新的 Rust 项目,这将在当前目录下创建 Cargo.tomlsrc 目录:

bash 复制代码
cargo init --lib
复制代码

请注意,我们使用 --lib 选项因为我们将创建一个库项目而不是二进制项目,这通常用于基准测试。

将Rust 代码放入 src 目录中。

Cargo.toml 文件中添加任何必要的依赖项,例如 Criterion 用于基准测试:

bash 复制代码
[dev-dependencies]
criterion = "0.3"

创建基准测试模块。在 benches 目录下创建一个 Rust 源文件,例如 benches/benchmark.rs,并编写您的基准测试代码。

创建一个新的基准测试文件,例如 benches/my_benchmark.rs,并编写您的基准测试代码。以下是一个简单的示例:

rust 复制代码
use criterion::{black_box, criterion_group, criterion_main, Criterion};
use std::fs;
use your_crate_name::{your_split_function, your_read_to_string_function};

fn bench_split_function(c: &mut Criterion) {
    c.bench_function("split", |b| {
        b.iter(|| {
            your_split_function(black_box("path/to/your/testfile.txt"));
        })
    });
}

fn bench_read_to_string_function(c: &mut Criterion) {
    c.bench_function("read_to_string", |b| {
        b.iter(|| {
            your_read_to_string_function(black_box("path/to/your/testfile.txt"));
        })
    });
}

// 引入您要基准测试的函数
use your_crate::process_file;

fn process_file_benchmark(c: &mut Criterion) {
    c.bench_function("process_file_with_split", |b| {
        b.iter(|| {
            // 传递一个文件路径给 process_file 函数
            process_file(&Path::new("path/to/your/file.txt")).unwrap();
        })
    });
}

criterion_group!(benches, process_file_benchmark, bench_split_function, bench_read_to_string_function);
criterion_main!(benches);

构建项目并运行基准测试:

bash 复制代码
cargo bench

这条命令会在包含 Cargo.toml 的目录中查找基准测试,并执行它们。

Criterion 将生成一个 HTML 报告,可以在 target/criterion 目录下找到它,并通过浏览器查看详细的基准测试结果。

相关推荐
小_太_阳13 分钟前
Scala_【2】变量和数据类型
开发语言·后端·scala·intellij-idea
直裾16 分钟前
scala借阅图书保存记录(三)
开发语言·后端·scala
唐 城37 分钟前
curl 放弃对 Hyper Rust HTTP 后端的支持
开发语言·http·rust
星就前端叭1 小时前
【开源】一款基于Vue3 + WebRTC + Node + SRS + FFmpeg搭建的直播间项目
前端·后端·开源·webrtc
小林coding2 小时前
阿里云 Java 后端一面,什么难度?
java·后端·mysql·spring·阿里云
AI理性派思考者2 小时前
【保姆教程】手把手教你在Linux系统搭建早期alpha项目cysic的验证者&证明者
后端·github·gpu
码银2 小时前
【python】银行客户流失预测预处理部分,独热编码·标签编码·数据离散化处理·数据筛选·数据分割
开发语言·python
从善若水2 小时前
【2024】Merry Christmas!一起用Rust绘制一颗圣诞树吧
开发语言·后端·rust
机器之心3 小时前
终于等来能塞进手机的文生图模型!十分之一体量,SnapGen实现百分百的效果
人工智能·后端
机器之心3 小时前
首次!大模型自动搜索人工生命,做出AI科学家的Sakana AI又放大招
人工智能·后端