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)); 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);

View File

@@ -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