Data usage structure optimizations.
Driven by traceview hotspots found in Settings UI. Change-Id: I614a049523c526b7fcd12fffdf53a3e4723623e4
This commit is contained in:
@@ -407,6 +407,54 @@ public class NetworkStatsHistoryTest extends AndroidTestCase {
|
|||||||
assertEquals(Long.MAX_VALUE - 40, performVarLong(Long.MAX_VALUE - 40));
|
assertEquals(Long.MAX_VALUE - 40, performVarLong(Long.MAX_VALUE - 40));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void testIndexBeforeAfter() throws Exception {
|
||||||
|
final long BUCKET_SIZE = HOUR_IN_MILLIS;
|
||||||
|
stats = new NetworkStatsHistory(BUCKET_SIZE);
|
||||||
|
|
||||||
|
final long FIRST_START = TEST_START;
|
||||||
|
final long FIRST_END = FIRST_START + (2 * HOUR_IN_MILLIS);
|
||||||
|
final long SECOND_START = TEST_START + WEEK_IN_MILLIS;
|
||||||
|
final long SECOND_END = SECOND_START + HOUR_IN_MILLIS;
|
||||||
|
final long THIRD_START = TEST_START + (2 * WEEK_IN_MILLIS);
|
||||||
|
final long THIRD_END = THIRD_START + (2 * HOUR_IN_MILLIS);
|
||||||
|
|
||||||
|
stats.recordData(FIRST_START, FIRST_END,
|
||||||
|
new NetworkStats.Entry(1024L, 10L, 2048L, 20L, 2L));
|
||||||
|
stats.recordData(SECOND_START, SECOND_END,
|
||||||
|
new NetworkStats.Entry(1024L, 10L, 2048L, 20L, 2L));
|
||||||
|
stats.recordData(THIRD_START, THIRD_END,
|
||||||
|
new NetworkStats.Entry(1024L, 10L, 2048L, 20L, 2L));
|
||||||
|
|
||||||
|
// should have buckets: 2+1+2
|
||||||
|
assertEquals(5, stats.size());
|
||||||
|
|
||||||
|
assertIndexBeforeAfter(stats, 0, 0, Long.MIN_VALUE);
|
||||||
|
assertIndexBeforeAfter(stats, 0, 1, FIRST_START);
|
||||||
|
assertIndexBeforeAfter(stats, 0, 1, FIRST_START + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 0, 2, FIRST_START + HOUR_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 2, FIRST_START + HOUR_IN_MILLIS + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 2, FIRST_END - MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 2, FIRST_END);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 2, FIRST_END + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 2, SECOND_START - MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 1, 3, SECOND_START);
|
||||||
|
assertIndexBeforeAfter(stats, 2, 3, SECOND_END);
|
||||||
|
assertIndexBeforeAfter(stats, 2, 3, SECOND_END + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 2, 3, THIRD_START - MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 2, 4, THIRD_START);
|
||||||
|
assertIndexBeforeAfter(stats, 3, 4, THIRD_START + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 3, 4, THIRD_START + HOUR_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 4, 4, THIRD_END);
|
||||||
|
assertIndexBeforeAfter(stats, 4, 4, THIRD_END + MINUTE_IN_MILLIS);
|
||||||
|
assertIndexBeforeAfter(stats, 4, 4, Long.MAX_VALUE);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void assertIndexBeforeAfter(
|
||||||
|
NetworkStatsHistory stats, int before, int after, long time) {
|
||||||
|
assertEquals("unexpected before", before, stats.getIndexBefore(time));
|
||||||
|
assertEquals("unexpected after", after, stats.getIndexAfter(time));
|
||||||
|
}
|
||||||
|
|
||||||
private static long performVarLong(long before) throws Exception {
|
private static long performVarLong(long before) throws Exception {
|
||||||
final ByteArrayOutputStream out = new ByteArrayOutputStream();
|
final ByteArrayOutputStream out = new ByteArrayOutputStream();
|
||||||
writeVarLong(new DataOutputStream(out), before);
|
writeVarLong(new DataOutputStream(out), before);
|
||||||
|
|||||||
@@ -1,32 +1,32 @@
|
|||||||
idx iface acct_tag_hex uid_tag_int rx_bytes tx_bytes
|
idx iface acct_tag_hex uid_tag_int rx_bytes tx_bytes
|
||||||
1 wlan0 0x0 0 14615 4270
|
2 wlan0 0x0 0 14615 4270
|
||||||
2 wlan0 0x0 1000 5175 915
|
3 wlan0 0x0 1000 5175 915
|
||||||
3 wlan0 0x0 1021 3381 903
|
4 wlan0 0x0 1021 3381 903
|
||||||
4 wlan0 0x0 10004 333821 53558
|
5 wlan0 0x0 10004 333821 53558
|
||||||
5 wlan0 0x0 10010 4888 37363
|
6 wlan0 0x0 10010 4888 37363
|
||||||
6 wlan0 0x0 10013 52 104
|
7 wlan0 0x0 10013 52 104
|
||||||
7 wlan0 0x74182ada00000000 10004 18725 1066
|
8 wlan0 0x74182ada00000000 10004 18725 1066
|
||||||
8 rmnet0 0x0 0 301274 30244
|
9 rmnet0 0x0 0 301274 30244
|
||||||
9 rmnet0 0x0 1000 304 441
|
10 rmnet0 0x0 1000 304 441
|
||||||
10 rmnet0 0x0 1013 2880 2272
|
11 rmnet0 0x0 1013 2880 2272
|
||||||
11 rmnet0 0x0 1021 31407 8430
|
12 rmnet0 0x0 1021 31407 8430
|
||||||
12 rmnet0 0x0 10003 32665 3814
|
13 rmnet0 0x0 10003 32665 3814
|
||||||
13 rmnet0 0x0 10004 2373141 420112
|
14 rmnet0 0x0 10004 2373141 420112
|
||||||
14 rmnet0 0x0 10010 870370 1111727
|
15 rmnet0 0x0 10010 870370 1111727
|
||||||
15 rmnet0 0x0 10013 240 240
|
16 rmnet0 0x0 10013 240 240
|
||||||
16 rmnet0 0x0 10016 16703 13512
|
17 rmnet0 0x0 10016 16703 13512
|
||||||
17 rmnet0 0x0 10017 3990 3269
|
18 rmnet0 0x0 10017 3990 3269
|
||||||
18 rmnet0 0x0 10018 474504 14516062
|
19 rmnet0 0x0 10018 474504 14516062
|
||||||
19 rmnet0 0x0 10019 782804 71077
|
20 rmnet0 0x0 10019 782804 71077
|
||||||
20 rmnet0 0x0 10022 70671 49684
|
21 rmnet0 0x0 10022 70671 49684
|
||||||
21 rmnet0 0x0 10029 5785354 397159
|
22 rmnet0 0x0 10029 5785354 397159
|
||||||
22 rmnet0 0x0 10033 2102 1686
|
23 rmnet0 0x0 10033 2102 1686
|
||||||
23 rmnet0 0x0 10034 15495464 227694
|
24 rmnet0 0x0 10034 15495464 227694
|
||||||
24 rmnet0 0x0 10037 31184994 684122
|
25 rmnet0 0x0 10037 31184994 684122
|
||||||
25 rmnet0 0x0 10051 298687 113485
|
26 rmnet0 0x0 10051 298687 113485
|
||||||
26 rmnet0 0x0 10056 29504 20669
|
27 rmnet0 0x0 10056 29504 20669
|
||||||
27 rmnet0 0x0 10069 683 596
|
28 rmnet0 0x0 10069 683 596
|
||||||
28 rmnet0 0x0 10072 34051 12453
|
29 rmnet0 0x0 10072 34051 12453
|
||||||
29 rmnet0 0x0 10077 7025393 213866
|
30 rmnet0 0x0 10077 7025393 213866
|
||||||
30 rmnet0 0x0 10081 354 1178
|
31 rmnet0 0x0 10081 354 1178
|
||||||
31 rmnet0 0x74182ada00000000 10037 28507378 437004
|
32 rmnet0 0x74182ada00000000 10037 28507378 437004
|
||||||
|
|||||||
Reference in New Issue
Block a user