不使用 nightly 时如何忽略基准测试?

2023-11-27

我有一个包含一些基准测试和测试的文件,想针对稳定版、测试版和夜间版进行测试。然而,要么我不使用基准测试,要么稳定/测试版抱怨。使用 stable/beta 时有没有办法隐藏所有基准部分?

作为示例,以下代码来自book:

#![feature(test)]

extern crate test;

pub fn add_two(a: i32) -> i32 {
    a + 2
}

#[cfg(test)]
mod tests {
    use super::*;
    use test::Bencher;

    #[test]
    fn it_works() {
        assert_eq!(4, add_two(2));
    }

    #[bench]
    fn bench_add_two(b: &mut Bencher) {
        b.iter(|| add_two(2));
    }
}

我正在使用 rustup,并希望同一个文件能够处理所有构建,调用如下内容:

rustup run nightly cargo bench --bin bench --features "bench"
rustup run nightly cargo test --bin bench --features "bench"
rustup run beta cargo test --bin bench
rustup run stable cargo test --bin bench

我能够隐藏#![feature(test)] with #![cfg_attr(feature = "bench", feature(test))]。我可以做一些与其余基准部分类似的事情吗?什么是功能标志的好资源?


在我的项目中,我将基准测试放在一个单独的模块中,就像我对测试所做的那样。然后我创建一个 Cargo 功能来启用它们。在本摘录中,我使用了功能名称unstable,但您可以使用任何您想要的东西:

Cargo.toml

# ...

[features]
unstable = []

# ...

src/lib.rs

#![cfg_attr(feature = "unstable", feature(test))]

#[cfg(test)]
mod tests {
    #[test]
    fn a_test() {
        assert_eq!(1, 1);
    }
}

#[cfg(all(feature = "unstable", test))]
mod bench {
    extern crate test;
    use self::test::Bencher;

    #[bench]
    fn a_bench(b: &mut Bencher) {
        let z = b.iter(|| {
            test::black_box(|| {
                1 + 1
            })
        });
    }
}

线路#[cfg(all(feature = "unstable", test))]表示仅在设置了该功能并且我们无论如何都在测试模式下编译时才编译以下项目。同样地,#![cfg_attr(feature = "unstable", feature(test))]仅启用test功能标志时unstable功能已启用。

这是一个例子在野外.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

不使用 nightly 时如何忽略基准测试? 的相关文章

随机推荐

  • Solrj 与 Solr Suggester

    使用 Solr Suggester 从 solrj 获取结果的正确方法是什么 这是我的要求 SolrQuery query new SolrQuery query setRequestHandler suggest query setPar
  • 将 html 转换为 javascript [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有谁知道是否有一个可以将 html 转换为 javascript 的工具 例如 div div 将转换为 aDiv document createE
  • 通过嵌入式 webview 进行 Google OAuth 2.0 客户端 ID 授权

    Setup 带有 Google 登录按钮的网站 后端 nodejs express 前端 Google Sign in for Web 我知道它已被弃用 我需要升级 https developers google com identity
  • NODE JS-EXPRESS:在适用于 GET 时,无法从 POST 和 PUT 请求的 HTTP 上下文中检索值

    在 Node js 和 Express 框架中 我无法从 POST 和 PUT 请求的 HTTP 上下文中检索值 而它适用于 GET 我使用 httpContext 设置唯一的 requestId 标识符 以便我可以在记录时使用它来跟踪 A
  • 如何使用beautiful soup和python获取favicon

    我写了一些愚蠢的代码只是为了学习 但它不适用于任何网站 这是代码 import urllib2 re from BeautifulSoup import BeautifulSoup as Soup class Founder def Fin
  • 通过SDK获取iPhone WiFi信息

    有没有办法使用iPhone SDK获取WiFi信息 信号强度 WiFi 频道和 SSID 等是我要寻找的主要内容 只对 Wifi 信息感兴趣 对蜂窝信息不感兴趣 根据this从 iOS 4 1 开始这实际上是可能的 该函数称为 CNCopy
  • 使用 C# 关闭打开的文件

    我遇到过一种情况 人们连接到共享上的文件 并且它阻止我覆盖该文件 我正在尝试编写一个方法 该方法将查看我提供的文件路径当前是否以这种方式锁定并关闭该资源的网络会话 我查看了 ADSI Winnt 提供程序 但 Resources Remov
  • 如何将参数传递给DbContext.Database.ExecuteSqlCommand方法?

    假设我有在实体框架中直接执行 sql 命令的有效需求 我无法弄清楚如何在 sql 语句中使用参数 以下示例 不是我的真实示例 不起作用 var firstName John var id 12 var sql Update User SET
  • 使用 matplotlib fill_ Between 在两条极曲线之间填充

    我有一种感觉 我会用这个来敲打我的额头 但我正在努力填补这个问题普通内饰两个极函数的r 4 sin 2 and r 2 看来我得到的与我想要的相反 有任何想法吗 import numpy as np import matplotlib py
  • 在 Android 中使用 DownloadManager 从标头获取文件名

    我正在使用 DownloadManager 从 url 下载视频文件 问题是 如果我使用默认文件夹下载文件 我无法在图库中看到视频 另外 如果我尝试使用这种方法 request setDestinationInExternalPublicD
  • 从 Python-Docx 中的单元格中删除段落

    我正在尝试创建一个具有两行标题的表格 该表格对所有样式使用简单的模板格式 两行标题是必需的 因为我在两个主要类别下有相同的标题 看来 在 Word 中处理此问题的唯一方法是 将一个两行表嵌套到主内容表的标题行中 以便文档能够格式化并在页面之
  • 具有行跨度和列跨度的自定义网格视图

    i am trying to implement a grid view which has the Graphical view as follows I have gone through various blogs and S O q
  • 初始化块中的“this”关键字是什么意思? [复制]

    这个问题在这里已经有答案了 这是我的代码 class StaticBlock println initializer block message public StaticBlock String message this message
  • Java中的异常与继承

    假设我们有这个问题 public class Father public void method1 public class Child1 extends Father public void method1 throws Exceptio
  • 替换 contenteditable div 中选定的文本

    我一直在寻找答案 但失败了 是否有跨浏览器解决方案来替换所选文本内容可编辑 div 我只是希望用户突出显示一些文本并将突出显示的文本替换为xxxxx 以下内容将在所有主要浏览器中完成这项工作 function replaceSelected
  • 存储 ENUM 值的 PostgreSQL 数组

    我有一个可以有状态的表 statuses unmoderated nominee finalist winner status db Enum statuses name enum nomination status metadata db
  • 如何使用Web API限制DOS攻击

    我计划使用 MVC4 和 Web APi 开发一个网站 它是一个简单的应用程序 将根据搜索显示客户信息 对于搜索功能 我使用 Ajax get 方法调用 webApi 我知道我应该使用 Post 但考虑这是当前的实现 我的 API 调用是
  • JOIN ON 子句中的 T-SQL Case 语句

    我正在尝试在 a 中构建一个 case if 语句JOIN ON clause LEFT JOIN CTSTRC Statuses ON RIGHT Statuses STRID 3 CTE F61 问题是该列 Statuses STRID
  • PHP dirname 返回符号链接路径

    假设我有一个符号链接 one directory to two directory If I echo dirname dirname FILE 它返回 one directory 最好的退货方式是什么 two directory 用法示例
  • 不使用 nightly 时如何忽略基准测试?

    我有一个包含一些基准测试和测试的文件 想针对稳定版 测试版和夜间版进行测试 然而 要么我不使用基准测试 要么稳定 测试版抱怨 使用 stable beta 时有没有办法隐藏所有基准部分 作为示例 以下代码来自book feature tes