File tree 6 files changed +59
-59
lines changed
6 files changed +59
-59
lines changed Original file line number Diff line number Diff line change @@ -16,9 +16,11 @@ readme = "../README.md"
16
16
event-listener = " 2.0.0"
17
17
18
18
[dev-dependencies ]
19
+ async-executor = " 1.3.0"
19
20
async-io = " 1.1.2"
20
- async-std = " 1.6.2"
21
21
futures = " 0.3.5"
22
22
futures-intrusive = " 0.3.1"
23
23
futures-lite = " 1.0.0"
24
+ num_cpus = " 1.13.0"
25
+ once_cell = " 1.4.1"
24
26
tokio = { version = " 0.2.21" , features = [" sync" , " parking_lot" ] }
Original file line number Diff line number Diff line change 3
3
extern crate test;
4
4
5
5
use std:: sync:: Arc ;
6
+ use std:: thread;
6
7
8
+ use async_executor:: Executor ;
7
9
use async_mutex:: Mutex ;
8
- use async_std:: task;
10
+ use futures_lite:: future;
11
+ use once_cell:: sync:: Lazy ;
9
12
use test:: Bencher ;
10
13
14
+ static EX : Lazy < Executor > = Lazy :: new ( || {
15
+ for _ in 0 ..num_cpus:: get ( ) {
16
+ thread:: spawn ( || future:: block_on ( EX . run ( future:: pending :: < ( ) > ( ) ) ) ) ;
17
+ }
18
+ Executor :: new ( )
19
+ } ) ;
20
+
11
21
#[ bench]
12
22
fn create ( b : & mut Bencher ) {
13
23
b. iter ( || Mutex :: new ( ( ) ) ) ;
14
24
}
15
25
16
26
#[ bench]
17
27
fn contention ( b : & mut Bencher ) {
18
- b. iter ( || task :: block_on ( run ( 10 , 1000 ) ) ) ;
28
+ b. iter ( || future :: block_on ( run ( 10 , 1000 ) ) ) ;
19
29
}
20
30
21
31
#[ bench]
22
32
fn no_contention ( b : & mut Bencher ) {
23
- b. iter ( || task :: block_on ( run ( 1 , 10000 ) ) ) ;
33
+ b. iter ( || future :: block_on ( run ( 1 , 10000 ) ) ) ;
24
34
}
25
35
26
36
async fn run ( task : usize , iter : usize ) {
@@ -29,7 +39,7 @@ async fn run(task: usize, iter: usize) {
29
39
30
40
for _ in 0 ..task {
31
41
let m = m. clone ( ) ;
32
- tasks. push ( task :: spawn ( async move {
42
+ tasks. push ( EX . spawn ( async move {
33
43
for _ in 0 ..iter {
34
44
let _ = m. lock ( ) . await ;
35
45
}
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 3
3
extern crate test;
4
4
5
5
use std:: sync:: Arc ;
6
+ use std:: thread;
6
7
7
- use async_std :: task ;
8
+ use async_executor :: Executor ;
8
9
use futures_intrusive:: sync:: Mutex ;
10
+ use futures_lite:: future;
11
+ use once_cell:: sync:: Lazy ;
9
12
use test:: Bencher ;
10
13
14
+ static EX : Lazy < Executor > = Lazy :: new ( || {
15
+ for _ in 0 ..num_cpus:: get ( ) {
16
+ thread:: spawn ( || future:: block_on ( EX . run ( future:: pending :: < ( ) > ( ) ) ) ) ;
17
+ }
18
+ Executor :: new ( )
19
+ } ) ;
20
+
11
21
#[ bench]
12
22
fn create ( b : & mut Bencher ) {
13
23
b. iter ( || Mutex :: new ( ( ) , true ) ) ;
14
24
}
15
25
16
26
#[ bench]
17
27
fn contention ( b : & mut Bencher ) {
18
- b. iter ( || task :: block_on ( run ( 10 , 1000 ) ) ) ;
28
+ b. iter ( || future :: block_on ( run ( 10 , 1000 ) ) ) ;
19
29
}
20
30
21
31
#[ bench]
22
32
fn no_contention ( b : & mut Bencher ) {
23
- b. iter ( || task :: block_on ( run ( 1 , 10000 ) ) ) ;
33
+ b. iter ( || future :: block_on ( run ( 1 , 10000 ) ) ) ;
24
34
}
25
35
26
36
async fn run ( task : usize , iter : usize ) {
@@ -29,7 +39,7 @@ async fn run(task: usize, iter: usize) {
29
39
30
40
for _ in 0 ..task {
31
41
let m = m. clone ( ) ;
32
- tasks. push ( task :: spawn ( async move {
42
+ tasks. push ( EX . spawn ( async move {
33
43
for _ in 0 ..iter {
34
44
let _ = m. lock ( ) . await ;
35
45
}
Original file line number Diff line number Diff line change 3
3
extern crate test;
4
4
5
5
use std:: sync:: Arc ;
6
+ use std:: thread;
6
7
7
- use async_std :: task ;
8
+ use async_executor :: Executor ;
8
9
use futures:: lock:: Mutex ;
10
+ use futures_lite:: future;
11
+ use once_cell:: sync:: Lazy ;
9
12
use test:: Bencher ;
10
13
14
+ static EX : Lazy < Executor > = Lazy :: new ( || {
15
+ for _ in 0 ..num_cpus:: get ( ) {
16
+ thread:: spawn ( || future:: block_on ( EX . run ( future:: pending :: < ( ) > ( ) ) ) ) ;
17
+ }
18
+ Executor :: new ( )
19
+ } ) ;
20
+
11
21
#[ bench]
12
22
fn create ( b : & mut Bencher ) {
13
23
b. iter ( || Mutex :: new ( ( ) ) ) ;
14
24
}
15
25
16
26
#[ bench]
17
27
fn contention ( b : & mut Bencher ) {
18
- b. iter ( || task :: block_on ( run ( 10 , 1000 ) ) ) ;
28
+ b. iter ( || future :: block_on ( run ( 10 , 1000 ) ) ) ;
19
29
}
20
30
21
31
#[ bench]
22
32
fn no_contention ( b : & mut Bencher ) {
23
- b. iter ( || task :: block_on ( run ( 1 , 10000 ) ) ) ;
33
+ b. iter ( || future :: block_on ( run ( 1 , 10000 ) ) ) ;
24
34
}
25
35
26
36
async fn run ( task : usize , iter : usize ) {
@@ -29,7 +39,7 @@ async fn run(task: usize, iter: usize) {
29
39
30
40
for _ in 0 ..task {
31
41
let m = m. clone ( ) ;
32
- tasks. push ( task :: spawn ( async move {
42
+ tasks. push ( EX . spawn ( async move {
33
43
for _ in 0 ..iter {
34
44
let _ = m. lock ( ) . await ;
35
45
}
Original file line number Diff line number Diff line change 3
3
extern crate test;
4
4
5
5
use std:: sync:: Arc ;
6
+ use std:: thread;
6
7
7
- use async_std:: task;
8
+ use async_executor:: Executor ;
9
+ use futures_lite:: future;
10
+ use once_cell:: sync:: Lazy ;
8
11
use test:: Bencher ;
9
12
use tokio:: sync:: Mutex ;
10
13
14
+ static EX : Lazy < Executor > = Lazy :: new ( || {
15
+ for _ in 0 ..num_cpus:: get ( ) {
16
+ thread:: spawn ( || future:: block_on ( EX . run ( future:: pending :: < ( ) > ( ) ) ) ) ;
17
+ }
18
+ Executor :: new ( )
19
+ } ) ;
20
+
11
21
#[ bench]
12
22
fn create ( b : & mut Bencher ) {
13
23
b. iter ( || Mutex :: new ( ( ) ) ) ;
14
24
}
15
25
16
26
#[ bench]
17
27
fn contention ( b : & mut Bencher ) {
18
- b. iter ( || task :: block_on ( run ( 10 , 1000 ) ) ) ;
28
+ b. iter ( || future :: block_on ( run ( 10 , 1000 ) ) ) ;
19
29
}
20
30
21
31
#[ bench]
22
32
fn no_contention ( b : & mut Bencher ) {
23
- b. iter ( || task :: block_on ( run ( 1 , 10000 ) ) ) ;
33
+ b. iter ( || future :: block_on ( run ( 1 , 10000 ) ) ) ;
24
34
}
25
35
26
36
async fn run ( task : usize , iter : usize ) {
@@ -29,7 +39,7 @@ async fn run(task: usize, iter: usize) {
29
39
30
40
for _ in 0 ..task {
31
41
let m = m. clone ( ) ;
32
- tasks. push ( task :: spawn ( async move {
42
+ tasks. push ( EX . spawn ( async move {
33
43
for _ in 0 ..iter {
34
44
let _ = m. lock ( ) . await ;
35
45
}
You can’t perform that action at this time.
0 commit comments