From ce29eb1c2c5cbb9a9b14470c9b40b2e0b477a9e6 Mon Sep 17 00:00:00 2001 From: Yoshua Wuyts Date: Wed, 18 Sep 2019 02:11:31 +0200 Subject: [PATCH 1/2] update bench code Signed-off-by: Yoshua Wuyts --- src/lib.rs | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e3ebbce..7123f74 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -159,6 +159,7 @@ pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream { pub fn bench(_attr: TokenStream, item: TokenStream) -> TokenStream { let input = syn::parse_macro_input!(item as syn::ItemFn); + let ret = &input.sig.output; let args = &input.sig.inputs; let name = &input.sig.ident; let body = &input.block; @@ -179,10 +180,12 @@ pub fn bench(_attr: TokenStream, item: TokenStream) -> TokenStream { let result = quote! { #[bench] #(#attrs)* - fn #name(b: &mut test::Bencher) { - b.iter(|| { - let _ = async_std::task::block_on(async { #body }); - }); + fn #name(b: &mut test::Bencher) #ret { + task::block_on(task::spawn(async { + b.iter(|| { + #body + }) + })) } }; From 30390f58cd6b4fefb060ee829ae1f488bbd6da4a Mon Sep 17 00:00:00 2001 From: Yoshua Wuyts Date: Wed, 18 Sep 2019 02:15:43 +0200 Subject: [PATCH 2/2] dont iter by default Signed-off-by: Yoshua Wuyts --- src/lib.rs | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 7123f74..15d5260 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -143,16 +143,13 @@ pub fn test(_attr: TokenStream, item: TokenStream) -> TokenStream { /// /// ```ignore /// #![feature(test)] -/// /// extern crate test; /// -/// use async_std::task; -/// -/// #[async_attributes::test] -/// async fn spawn_and_await() { -/// task::spawn(async { +/// #[async_attributes::bench] +/// async fn bench_1(b: &mut test::Bencher) { +/// b.iter(|| { /// println!("hello world"); -/// }).await; +/// }) /// } /// ``` #[proc_macro_attribute] @@ -182,9 +179,7 @@ pub fn bench(_attr: TokenStream, item: TokenStream) -> TokenStream { #(#attrs)* fn #name(b: &mut test::Bencher) #ret { task::block_on(task::spawn(async { - b.iter(|| { - #body - }) + #body })) } };