gpt4 book ai didi

testing - 测试子模块真的能减少 Rust 中的代码膨胀吗?

转载 作者:行者123 更新时间:2023-11-29 08:03:05 25 4
gpt4 key购买 nike

Section 5.2 Testing在 Rust Book 中说

The [tests] module allows us to group all of our tests together, and to also define helper functions if needed, that don't become a part of the rest of our crate. The cfg attribute only compiles our test code if we're currently trying to run the tests. This can save compile time, and also ensures that our tests are entirely left out of a normal build.

我假设标记为 #[test] 的函数不会出现在发布版本中,即使它们出现在出现的模块中,对吧?我希望它只是测试辅助函数可能会浪费空间。它们可以用 #[cfg(test)] 单独隐藏,对吧?

最佳答案

是的,您可以使用 #[cfg(test)] 隐藏单个函数,并且 #[test] 函数将在非测试版本中被剥离(注意也可以在 Release模式下进行测试!)。是的,在发布版本中,未使用的功能将被优化掉。然而:

  • 向模块添加单个 #[cfg(test)] 比在每个测试中都添加它更容易(因此更有可能实际完成)。
  • 编译时的差异仍然存在。在发布版本中,当未使用的函数被剥离时,它们在被删除之前已经过分析、类型检查和优化。在编译过程的早期丢弃函数的源代码会更快。
  • 非测试调试构建也很重要 --- 在那里,未使用的函数不会被删除。

关于testing - 测试子模块真的能减少 Rust 中的代码膨胀吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40271711/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com