Data usage structure optimizations.

Driven by traceview hotspots found in Settings UI.

Change-Id: I614a049523c526b7fcd12fffdf53a3e4723623e4
This commit is contained in:
Jeff Sharkey
2011-09-11 17:33:14 -07:00
parent d1a5951ed9
commit 4dc0642d32
2 changed files with 79 additions and 31 deletions

View File

@@ -407,6 +407,54 @@ public class NetworkStatsHistoryTest extends AndroidTestCase {
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 {
final ByteArrayOutputStream out = new ByteArrayOutputStream();
writeVarLong(new DataOutputStream(out), before);

View File

@@ -1,32 +1,32 @@
idx iface acct_tag_hex uid_tag_int rx_bytes tx_bytes
1 wlan0 0x0 0 14615 4270
2 wlan0 0x0 1000 5175 915
3 wlan0 0x0 1021 3381 903
4 wlan0 0x0 10004 333821 53558
5 wlan0 0x0 10010 4888 37363
6 wlan0 0x0 10013 52 104
7 wlan0 0x74182ada00000000 10004 18725 1066
8 rmnet0 0x0 0 301274 30244
9 rmnet0 0x0 1000 304 441
10 rmnet0 0x0 1013 2880 2272
11 rmnet0 0x0 1021 31407 8430
12 rmnet0 0x0 10003 32665 3814
13 rmnet0 0x0 10004 2373141 420112
14 rmnet0 0x0 10010 870370 1111727
15 rmnet0 0x0 10013 240 240
16 rmnet0 0x0 10016 16703 13512
17 rmnet0 0x0 10017 3990 3269
18 rmnet0 0x0 10018 474504 14516062
19 rmnet0 0x0 10019 782804 71077
20 rmnet0 0x0 10022 70671 49684
21 rmnet0 0x0 10029 5785354 397159
22 rmnet0 0x0 10033 2102 1686
23 rmnet0 0x0 10034 15495464 227694
24 rmnet0 0x0 10037 31184994 684122
25 rmnet0 0x0 10051 298687 113485
26 rmnet0 0x0 10056 29504 20669
27 rmnet0 0x0 10069 683 596
28 rmnet0 0x0 10072 34051 12453
29 rmnet0 0x0 10077 7025393 213866
30 rmnet0 0x0 10081 354 1178
31 rmnet0 0x74182ada00000000 10037 28507378 437004
2 wlan0 0x0 0 14615 4270
3 wlan0 0x0 1000 5175 915
4 wlan0 0x0 1021 3381 903
5 wlan0 0x0 10004 333821 53558
6 wlan0 0x0 10010 4888 37363
7 wlan0 0x0 10013 52 104
8 wlan0 0x74182ada00000000 10004 18725 1066
9 rmnet0 0x0 0 301274 30244
10 rmnet0 0x0 1000 304 441
11 rmnet0 0x0 1013 2880 2272
12 rmnet0 0x0 1021 31407 8430
13 rmnet0 0x0 10003 32665 3814
14 rmnet0 0x0 10004 2373141 420112
15 rmnet0 0x0 10010 870370 1111727
16 rmnet0 0x0 10013 240 240
17 rmnet0 0x0 10016 16703 13512
18 rmnet0 0x0 10017 3990 3269
19 rmnet0 0x0 10018 474504 14516062
20 rmnet0 0x0 10019 782804 71077
21 rmnet0 0x0 10022 70671 49684
22 rmnet0 0x0 10029 5785354 397159
23 rmnet0 0x0 10033 2102 1686
24 rmnet0 0x0 10034 15495464 227694
25 rmnet0 0x0 10037 31184994 684122
26 rmnet0 0x0 10051 298687 113485
27 rmnet0 0x0 10056 29504 20669
28 rmnet0 0x0 10069 683 596
29 rmnet0 0x0 10072 34051 12453
30 rmnet0 0x0 10077 7025393 213866
31 rmnet0 0x0 10081 354 1178
32 rmnet0 0x74182ada00000000 10037 28507378 437004