1
1
describe ( "Runtime exposes" , function ( ) {
2
2
it ( "__time a low overhead, high resolution, time in ms." , function ( ) {
3
- var dateTimeStart = Date . now ( ) ;
4
- var timeStart = __time ( ) ;
5
- var acc = 0 ;
6
- var s = android . os . SystemClock . elapsedRealtime ( ) ;
7
- for ( var i = 0 ; i < 1000 ; i ++ ) {
8
- var c = android . os . SystemClock . elapsedRealtime ( ) ;
9
- acc += ( c - s ) ;
10
- s = c ;
3
+ // Try to get the times using Date.now and __time and compare the results, expect them to be somewhat "close".
4
+ // Sometimes GC hits after Date.now is captured but before __time or the vice-versa and the test fails,
5
+ // so we are giving it several attempts.
6
+ for ( var i = 0 ; i < 5 ; i ++ ) {
7
+ try {
8
+ var dateTimeStart = Date . now ( ) ;
9
+ var timeStart = __time ( ) ;
10
+ var acc = 0 ;
11
+ var s = android . os . SystemClock . elapsedRealtime ( ) ;
12
+ for ( var i = 0 ; i < 1000 ; i ++ ) {
13
+ var c = android . os . SystemClock . elapsedRealtime ( ) ;
14
+ acc += ( c - s ) ;
15
+ s = c ;
16
+ }
17
+ var dateTimeEnd = Date . now ( ) ;
18
+ var timeEnd = __time ( ) ;
19
+ var dateDelta = dateTimeEnd - dateTimeStart ;
20
+ var timeDelta = timeEnd - timeStart ;
21
+ expect ( Math . abs ( dateDelta - timeDelta ) < dateDelta * 0.25 ) . toBe ( true ) ;
22
+ break ;
23
+ } catch ( e ) {
24
+ if ( i == 4 ) {
25
+ throw e ;
26
+ }
27
+ }
11
28
}
12
- var dateTimeEnd = Date . now ( ) ;
13
- var timeEnd = __time ( ) ;
14
- var dateDelta = dateTimeEnd - dateTimeStart ;
15
- var timeDelta = timeEnd - timeStart ;
16
- expect ( Math . abs ( dateDelta - timeDelta ) < dateDelta * 0.25 ) . toBe ( true ) ;
17
29
} ) ;
18
30
} ) ;
0 commit comments