File tree Expand file tree Collapse file tree 4 files changed +22
-1
lines changed Expand file tree Collapse file tree 4 files changed +22
-1
lines changed Original file line number Diff line number Diff line change @@ -11,6 +11,7 @@ docopt = "1"
11
11
fixedbitset = " 0.1.5"
12
12
glium = " 0.21"
13
13
lazy_static = " 1"
14
+ libc = " 0.2"
14
15
odds = " 0.3"
15
16
rand = " 0.5"
16
17
regex = " 1"
Original file line number Diff line number Diff line change @@ -5,7 +5,12 @@ mod win;
5
5
#[ cfg( windows) ]
6
6
pub use self :: win:: get_cpu_time;
7
7
8
- #[ cfg( not( windows) ) ]
8
+ #[ cfg( unix) ]
9
+ mod unix;
10
+ #[ cfg( unix) ]
11
+ pub use self :: unix:: get_cpu_time;
12
+
13
+ #[ cfg( not( any( unix, windows) ) ) ]
9
14
pub fn get_cpu_time ( ) -> Option < u64 > {
10
15
None
11
16
}
Original file line number Diff line number Diff line change
1
+ use libc:: { getrusage, rusage, RUSAGE_SELF } ;
2
+ use std:: mem;
3
+
4
+ pub fn get_cpu_time ( ) -> Option < u64 > {
5
+ unsafe {
6
+ let mut usage: rusage = mem:: uninitialized ( ) ;
7
+ getrusage ( RUSAGE_SELF , & mut usage) ;
8
+ let user = 1_000_000_000 * ( usage. ru_utime . tv_sec as u64 )
9
+ + 1_000 * ( usage. ru_utime . tv_usec as u64 ) ;
10
+ let system = 1_000_000_000 * ( usage. ru_stime . tv_sec as u64 )
11
+ + 1_000 * ( usage. ru_stime . tv_usec as u64 ) ;
12
+ Some ( user + system)
13
+ }
14
+ }
Original file line number Diff line number Diff line change @@ -33,6 +33,7 @@ extern crate serde; // all
33
33
extern crate cgmath; // nbody
34
34
#[ macro_use]
35
35
extern crate glium; // nbody
36
+ extern crate libc; // life
36
37
extern crate rand; // nbody
37
38
extern crate time; // nbody, sieve
38
39
extern crate odds; // sieve
You can’t perform that action at this time.
0 commit comments