https://www.youtube.com/watch?v=b6zKBZcg5fk
笔记:
- new ArrayList<>(), 最好是给初始的capacity, 默认值是zero initial capacity.
尽量避免之后调用add()操作, 造成的memory object copy引起的额外性能消耗.
chromium写的好的代码长这样:
protected static List<String> processLogcat(List<String> rawLogcat) {
List<String> out = new ArrayList<String>(rawLogcat.size());
for (String ln : rawLogcat) {
ln = elideEmail(ln);
ln = elideUrl(ln);
ln = elideIp(ln);
ln = elideMac(ln);
ln = elideConsole(ln);
out.add(ln);
}
return out;
}
- new StringBuilder(), 最好给出初始的capacity, 默认值是16.
尽量避免之后调用append()操作, 造成的memory object copy引起的额外性能消耗.
最好是调用这个构造方法:
public StringBuilder(String str) {
super(str);
}
The capacity of the new builder will be the length of the String plus 16.
chromium写的好的代码长这样:
private String buildSuggestWhere(String selection, int argc) {
StringBuilder sb = new StringBuilder(selection);
for (int i = 0; i < argc - 1; i++) {
sb.append(" OR ");
sb.append(selection);
}
return sb.toString();
}
- 学习了不同的方法调用对应bytecode上的4种类型.
1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png
11.png
12.png
13.png
14.png
15.png
16.png
17.png
18.png
----- DONE ----