Fix a few performance lints

pull/192/head
TacoTheDank 5 years ago
parent 9ce592ae68
commit 31b0628c68

@ -1005,10 +1005,10 @@ public class AdapterFolder extends RecyclerView.Adapter<AdapterFolder.ViewHolder
for (TupleFolderEx parent : parents)
parent.parent_ref = root;
for (long pid : parentChilds.keySet()) {
TupleFolderEx parent = idFolder.get(pid);
for (Map.Entry<Long, List<TupleFolderEx>> entry : parentChilds.entrySet()) {
TupleFolderEx parent = idFolder.get(entry.getKey());
if (parent != null) {
parent.child_refs = parentChilds.get(pid);
parent.child_refs = entry.getValue();
for (TupleFolderEx child : parent.child_refs)
child.parent_ref = parent;
}

@ -1031,8 +1031,9 @@ class Core {
Log.i(folder.name + " move from " + folder.type + " to " + target.type);
List<Message> icopies = new ArrayList<>();
for (Message imessage : map.keySet()) {
EntityMessage message = map.get(imessage);
for (Map.Entry<Message, EntityMessage> entry : map.entrySet()) {
Message imessage = entry.getKey();
EntityMessage message = entry.getValue();
File file = File.createTempFile("draft", "." + message.id, context.getCacheDir());
try (OutputStream os = new BufferedOutputStream(new FileOutputStream(file))) {
@ -1698,8 +1699,7 @@ class Core {
// Get remote folders
long start = new Date().getTime();
List<Folder> ifolders = new ArrayList<>();
ifolders.addAll(Arrays.asList(defaultFolder.list("*")));
List<Folder> ifolders = new ArrayList<>(Arrays.asList(defaultFolder.list("*")));
List<String> subscription = new ArrayList<>();
try {
@ -1876,15 +1876,16 @@ class Core {
}
Log.i("Updating folders parents=" + parentFolders.size());
for (String parentName : parentFolders.keySet()) {
EntityFolder parent = nameFolder.get(parentName);
for (EntityFolder child : parentFolders.get(parentName))
for (Map.Entry<String, List<EntityFolder>> entry : parentFolders.entrySet()) {
EntityFolder parent = nameFolder.get(entry.getKey());
for (EntityFolder child : entry.getValue())
db.folder().setFolderParent(child.id, parent == null ? null : parent.id);
}
Log.i("Delete local count=" + local.size());
for (String name : local.keySet()) {
EntityFolder folder = local.get(name);
for (Map.Entry<String, EntityFolder> entry : local.entrySet()) {
String name = entry.getKey();
EntityFolder folder = entry.getValue();
List<EntityFolder> childs = parentFolders.get(name);
if (EntityFolder.USER.equals(folder.type) ||
childs == null || childs.size() == 0) {
@ -3507,8 +3508,8 @@ class Core {
Map<String, String> sid = istore.id(id);
if (sid != null) {
StringBuilder sb = new StringBuilder();
for (String key : sid.keySet())
sb.append(" ").append(key).append("=").append(sid.get(key));
for (Map.Entry<String, String> entry : sid.entrySet())
sb.append(" ").append(entry.getKey()).append("=").append(entry.getValue());
if (!account.partial_fetch)
Log.w("Empty message" + sb.toString());
}
@ -3620,11 +3621,12 @@ class Core {
}
// Difference
for (long group : groupMessages.keySet()) {
for (Map.Entry<Long, List<TupleMessageEx>> entry : groupMessages.entrySet()) {
long group = entry.getKey();
List<Long> add = new ArrayList<>();
List<Long> update = new ArrayList<>();
List<Long> remove = new ArrayList<>(groupNotifying.get(group));
for (TupleMessageEx message : groupMessages.get(group)) {
for (TupleMessageEx message : entry.getValue()) {
long id = (message.content ? message.id : -message.id);
if (remove.contains(id)) {
remove.remove(id);
@ -3655,7 +3657,7 @@ class Core {
// Build notifications
List<NotificationCompat.Builder> notifications = getNotificationUnseen(context,
group, groupMessages.get(group),
group, entry.getValue(),
notify_summary, new_messages,
redacted);
@ -4435,8 +4437,9 @@ class Core {
void resetBatches() {
process = false;
synchronized (this) {
for (FolderPriority key : sequence.keySet()) {
batch.put(key, sequence.get(key));
for (Map.Entry<FolderPriority, Long> entry : sequence.entrySet()) {
FolderPriority key = entry.getKey();
batch.put(key, entry.getValue());
if (BuildConfig.DEBUG)
Log.i("=== Reset " + key.folder + ":" + key.priority + " batch=" + batch.get(key));
}

@ -606,9 +606,10 @@ public class EmailService implements AutoCloseable {
Map<String, String> sid = istore.id(id);
if (sid != null) {
Map<String, String> crumb = new HashMap<>();
for (String key : sid.keySet()) {
crumb.put(key, sid.get(key));
EntityLog.log(context, "Server " + key + "=" + sid.get(key));
for (Map.Entry<String, String> entry : sid.entrySet()) {
String key = entry.getKey();
crumb.put(key, entry.getValue());
EntityLog.log(context, "Server " + key + "=" + entry.getValue());
}
Log.breadcrumb("server", crumb);
}
@ -936,8 +937,7 @@ public class EmailService implements AutoCloseable {
}
sslSocket.setEnabledCipherSuites(ciphers.toArray(new String[0]));
} else {
List<String> ciphers = new ArrayList<>();
ciphers.addAll(Arrays.asList(sslSocket.getEnabledCipherSuites()));
List<String> ciphers = new ArrayList<>(Arrays.asList(sslSocket.getEnabledCipherSuites()));
for (String cipher : sslSocket.getSupportedCipherSuites())
if (cipher.contains("3DES")) {
// Some servers support 3DES and RC4 only

@ -3562,8 +3562,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
outState.putInt("fair:autoCloseCount", autoCloseCount);
outState.putStringArray("fair:values", values.keySet().toArray(new String[0]));
for (String name : values.keySet())
outState.putLongArray("fair:name:" + name, Helper.toLongArray(values.get(name)));
for (Map.Entry<String, List<Long>> entry : values.entrySet())
outState.putLongArray("fair:name:" + entry.getKey(), Helper.toLongArray(entry.getValue()));
if (rvMessage != null) {
Parcelable rv = rvMessage.getLayoutManager().onSaveInstanceState();
@ -3694,8 +3694,8 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
if (ids != null) {
for (long id : ids) {
Log.i("Hidden id=" + id);
for (String key : values.keySet())
values.get(key).remove(id);
for (List<Long> longs : values.values())
longs.remove(id);
sizes.remove(id);
heights.remove(id);
positions.remove(id);
@ -4718,8 +4718,7 @@ public class FragmentMessages extends FragmentBase implements SharedPreferences.
duplicates.put(message.hash, new ArrayList<>());
duplicates.get(message.hash).add(message);
}
for (String hash : duplicates.keySet()) {
List<TupleMessageEx> dups = duplicates.get(hash);
for (List<TupleMessageEx> dups : duplicates.values()) {
int base = 0;
for (int i = 0; i < dups.size(); i++)
if (dups.get(i).folder == folder) {

@ -519,8 +519,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
@Override
protected void onExecuted(Bundle args, SortedMap<String, Charset> charsets) {
StringBuilder sb = new StringBuilder();
for (String key : charsets.keySet())
sb.append(charsets.get(key).displayName()).append("\r\n");
for (Charset charset : charsets.values())
sb.append(charset.displayName()).append("\r\n");
new AlertDialog.Builder(getContext())
.setTitle(R.string.title_advanced_charsets)
.setMessage(sb.toString())
@ -548,11 +548,9 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc
try {
SSLSocket socket = (SSLSocket) SSLSocketFactory.getDefault().createSocket();
List<String> protocols = new ArrayList<>();
protocols.addAll(Arrays.asList(socket.getEnabledProtocols()));
List<String> protocols = new ArrayList<>(Arrays.asList(socket.getEnabledProtocols()));
List<String> ciphers = new ArrayList<>();
ciphers.addAll(Arrays.asList(socket.getEnabledCipherSuites()));
List<String> ciphers = new ArrayList<>(Arrays.asList(socket.getEnabledCipherSuites()));
for (String p : socket.getSupportedProtocols()) {
boolean enabled = protocols.contains(p);

@ -251,8 +251,8 @@ public class Log {
static void breadcrumb(String name, Map<String, String> crumb) {
try {
Map<String, Object> ocrumb = new HashMap<>();
for (String key : crumb.keySet())
ocrumb.put(key, crumb.get(key));
for (Map.Entry<String, String> entry : crumb.entrySet())
ocrumb.put(entry.getKey(), entry.getValue());
Bugsnag.leaveBreadcrumb(name, ocrumb, BreadcrumbType.LOG);
} catch (Throwable ex) {
ex.printStackTrace();

@ -226,14 +226,15 @@ public class MessageClassifier {
DB db = DB.getInstance(context);
int words = state.words.size() - texts.size() - 1;
List<Chance> chances = new ArrayList<>();
for (String clazz : state.classStats.keySet()) {
for (Map.Entry<String, Stat> entry : state.classStats.entrySet()) {
String clazz = entry.getKey();
EntityFolder folder = db.folder().getFolderByName(account, clazz);
if (folder == null) {
Log.w("Classifier no folder class=" + account + ":" + clazz);
continue;
}
Stat stat = state.classStats.get(clazz);
Stat stat = entry.getValue();
double chance = stat.totalFrequency / maxMessages / words;
Chance c = new Chance(clazz, chance);
@ -308,8 +309,9 @@ public class MessageClassifier {
if (classFrequency == null)
return;
for (String clazz : classFrequency.keySet()) {
Frequency frequency = classFrequency.get(clazz);
for (Map.Entry<String, Frequency> entry : classFrequency.entrySet()) {
String clazz = entry.getKey();
Frequency frequency = entry.getValue();
if (frequency.count <= 0)
continue;
@ -408,8 +410,9 @@ public class MessageClassifier {
load(context);
DB db = DB.getInstance(context);
for (Long account : accountMsgIds.keySet()) {
List<String> msgids = accountMsgIds.get(account);
for (Map.Entry<Long, List<String>> entry : accountMsgIds.entrySet()) {
Long account = entry.getKey();
List<String> msgids = entry.getValue();
Log.i("Classifier cleanup account=" + account + " count=" + msgids.size());
for (String msgid : new ArrayList<>(msgids)) {
List<EntityMessage> messages = db.message().getMessagesByMsgId(account, msgid);
@ -447,25 +450,25 @@ public class MessageClassifier {
@NonNull
static JSONObject toJson() throws JSONException {
JSONArray jmessages = new JSONArray();
for (Long account : classMessages.keySet())
for (String clazz : classMessages.get(account).keySet()) {
for (Map.Entry<Long, Map<String, Integer>> entry : classMessages.entrySet())
for (String clazz : entry.getValue().keySet()) {
JSONObject jmessage = new JSONObject();
jmessage.put("account", account);
jmessage.put("account", entry.getKey());
jmessage.put("class", clazz);
jmessage.put("count", classMessages.get(account).get(clazz));
jmessage.put("count", entry.getValue().get(clazz));
jmessages.put(jmessage);
}
JSONArray jwords = new JSONArray();
for (Long account : wordClassFrequency.keySet())
for (String word : wordClassFrequency.get(account).keySet()) {
Map<String, Frequency> classFrequency = wordClassFrequency.get(account).get(word);
for (String clazz : classFrequency.keySet()) {
Frequency f = classFrequency.get(clazz);
for (Map.Entry<Long, Map<String, Map<String, Frequency>>> entry : wordClassFrequency.entrySet())
for (String word : entry.getValue().keySet()) {
Map<String, Frequency> classFrequency = entry.getValue().get(word);
for (Map.Entry<String, Frequency> e : classFrequency.entrySet()) {
Frequency f = e.getValue();
JSONObject jword = new JSONObject();
jword.put("account", account);
jword.put("account", entry.getKey());
jword.put("word", word);
jword.put("class", clazz);
jword.put("class", e.getKey());
jword.put("count", f.count);
jword.put("dup", f.duplicates);
jword.put("before", from(f.before));
@ -475,10 +478,10 @@ public class MessageClassifier {
}
JSONArray jclassified = new JSONArray();
for (Long account : accountMsgIds.keySet()) {
for (Map.Entry<Long, List<String>> entry : accountMsgIds.entrySet()) {
JSONObject jaccount = new JSONObject();
jaccount.put("account", account);
jaccount.put("messages", from(accountMsgIds.get(account)));
jaccount.put("account", entry.getKey());
jaccount.put("messages", from(entry.getValue()));
jclassified.put(jaccount);
}
@ -502,8 +505,8 @@ public class MessageClassifier {
@NonNull
private static JSONObject from(@NonNull Map<String, Integer> map) throws JSONException {
JSONObject jmap = new JSONObject();
for (String key : map.keySet())
jmap.put(key, map.get(key));
for (Map.Entry<String, Integer> entry : map.entrySet())
jmap.put(entry.getKey(), entry.getValue());
return jmap;
}

Loading…
Cancel
Save