http://doc.rust-lang.org/book/testing.html
Probably because of feature staging.
Example:
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));
}
}
Output:
me@me-desktop ~/projects/adder $ cargo bench -v
Compiling adder v0.0.1 (file:///home/me/projects/adder)
Running `rustc src/lib.rs --crate-name adder --crate-type lib -C opt-level=3 --test -C metadata=f6f930dd9a1ff1b4 -C extra-filename=-f6f930dd9a1ff1b4 --out-dir /home/me/projects/adder/target/release --emit=dep-info,link -L dependency=/home/me/projects/adder/target/release -L dependency=/home/me/projects/adder/target/release/deps`
src/lib.rs:1:1: 1:19 error: use of unstable library feature 'test'
src/lib.rs:1 extern crate test;
^~~~~~~~~~~~~~~~~~
src/lib.rs:1:19: 1:19 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:10:9: 10:22 error: use of unstable library feature 'test'
src/lib.rs:10 use test::Bencher;
^~~~~~~~~~~~~
src/lib.rs:10:22: 10:22 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:18:30: 18:37 error: use of unstable library feature 'test'
src/lib.rs:18 fn bench_add_two(b: &mut Bencher) {
^~~~~~~
src/lib.rs:18:37: 18:37 help: add #![feature(test)] to the crate attributes to enable
src/lib.rs:19:11: 19:30 error: use of unstable library feature 'test'
src/lib.rs:19 b.iter(|| add_two(2));
^~~~~~~~~~~~~~~~~~~
src/lib.rs:19:30: 19:30 help: add #![feature(test)] to the crate attributes to enable
error: aborting due to 4 previous errors
Could not compile `adder`.
Caused by:
Process didn't exit successfully: `rustc src/lib.rs --crate-name adder --crate-type lib -C opt-level=3 --test -C metadata=f6f930dd9a1ff1b4 -C extra-filename=-f6f930dd9a1ff1b4 --out-dir /home/me/projects/adder/target/release --emit=dep-info,link -L dependency=/home/me/projects/adder/target/release -L dependency=/home/me/projects/adder/target/release/deps` (exit code: 101)
Yes, I should move this into the unstable parts. Thanks!
@KingOfThePirates @steveklabnik
Any ideas, where one can find full working example of benchmark?
Thanks!
@greyblake I'm not sure what you mean. does https://doc.rust-lang.org/stable/book/benchmark-tests.html not work?
@steveklabnik
The example does not work on the last stable (1.12.1):
Compiling runbench v0.1.0 (file:///tmp/runbench)
error[E0554]: #[feature] may not be used on the stable release channel
--> src/lib.rs:1:1
|
1 | #![feature(test)]
| ^^^^^^^^^^^^^^^^^
error: aborting due to previous error
error: Could not compile `runbench`.
To learn more, run the command again with --verbose.
I just figured out, however, it works on nightly (2016-11-02)
Yes, it's in the nightly-only section of the book, because it's not stable yet.
Ah) Now it makes sense to me! Thanks
I still don't understand how to make it work
I tried cargo +nightly bench
but didn't help
@arielgabizon I suggest you open a thread on users.rust-lang.org
Most helpful comment
@KingOfThePirates @steveklabnik
Any ideas, where one can find full working example of benchmark?
Thanks!