1 // $ cargo bench --features full --bench file 2 3 #![feature(rustc_private, test)] 4 #![recursion_limit = "1024"] 5 #![allow(clippy::missing_panics_doc, clippy::must_use_candidate)] 6 7 extern crate test; 8 9 #[macro_use] 10 #[path = "../tests/macros/mod.rs"] 11 mod macros; 12 13 #[path = "../tests/common/mod.rs"] 14 mod common; 15 #[path = "../tests/repo/mod.rs"] 16 pub mod repo; 17 18 use proc_macro2::TokenStream; 19 use std::fs; 20 use std::str::FromStr; 21 use test::Bencher; 22 23 const FILE: &str = "tests/rust/library/core/src/str/mod.rs"; 24 25 #[bench] parse_file(b: &mut Bencher)26fn parse_file(b: &mut Bencher) { 27 repo::clone_rust(); 28 let content = fs::read_to_string(FILE).unwrap(); 29 let tokens = TokenStream::from_str(&content).unwrap(); 30 b.iter(|| syn::parse2::<syn::File>(tokens.clone())); 31 } 32