From 31b0628c68ebe3df0782c16268c46a7df91abcef Mon Sep 17 00:00:00 2001 From: TacoTheDank Date: Wed, 27 Jan 2021 10:35:27 -0500 Subject: [PATCH] Fix a few performance lints --- .../java/eu/faircode/email/AdapterFolder.java | 6 +-- app/src/main/java/eu/faircode/email/Core.java | 35 +++++++------- .../java/eu/faircode/email/EmailService.java | 10 ++-- .../eu/faircode/email/FragmentMessages.java | 11 ++--- .../faircode/email/FragmentOptionsMisc.java | 10 ++-- app/src/main/java/eu/faircode/email/Log.java | 4 +- .../eu/faircode/email/MessageClassifier.java | 47 ++++++++++--------- 7 files changed, 63 insertions(+), 60 deletions(-) diff --git a/app/src/main/java/eu/faircode/email/AdapterFolder.java b/app/src/main/java/eu/faircode/email/AdapterFolder.java index 876441dfc9..97953ab0b6 100644 --- a/app/src/main/java/eu/faircode/email/AdapterFolder.java +++ b/app/src/main/java/eu/faircode/email/AdapterFolder.java @@ -1005,10 +1005,10 @@ public class AdapterFolder extends RecyclerView.Adapter> 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; } diff --git a/app/src/main/java/eu/faircode/email/Core.java b/app/src/main/java/eu/faircode/email/Core.java index b135a533f8..87fe12e91c 100644 --- a/app/src/main/java/eu/faircode/email/Core.java +++ b/app/src/main/java/eu/faircode/email/Core.java @@ -1031,8 +1031,9 @@ class Core { Log.i(folder.name + " move from " + folder.type + " to " + target.type); List icopies = new ArrayList<>(); - for (Message imessage : map.keySet()) { - EntityMessage message = map.get(imessage); + for (Map.Entry 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 ifolders = new ArrayList<>(); - ifolders.addAll(Arrays.asList(defaultFolder.list("*"))); + List ifolders = new ArrayList<>(Arrays.asList(defaultFolder.list("*"))); List 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> 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 entry : local.entrySet()) { + String name = entry.getKey(); + EntityFolder folder = entry.getValue(); List childs = parentFolders.get(name); if (EntityFolder.USER.equals(folder.type) || childs == null || childs.size() == 0) { @@ -3507,8 +3508,8 @@ class Core { Map 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 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> entry : groupMessages.entrySet()) { + long group = entry.getKey(); List add = new ArrayList<>(); List update = new ArrayList<>(); List 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 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 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)); } diff --git a/app/src/main/java/eu/faircode/email/EmailService.java b/app/src/main/java/eu/faircode/email/EmailService.java index c18fdb309c..662468747f 100644 --- a/app/src/main/java/eu/faircode/email/EmailService.java +++ b/app/src/main/java/eu/faircode/email/EmailService.java @@ -606,9 +606,10 @@ public class EmailService implements AutoCloseable { Map sid = istore.id(id); if (sid != null) { Map 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 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 ciphers = new ArrayList<>(); - ciphers.addAll(Arrays.asList(sslSocket.getEnabledCipherSuites())); + List ciphers = new ArrayList<>(Arrays.asList(sslSocket.getEnabledCipherSuites())); for (String cipher : sslSocket.getSupportedCipherSuites()) if (cipher.contains("3DES")) { // Some servers support 3DES and RC4 only diff --git a/app/src/main/java/eu/faircode/email/FragmentMessages.java b/app/src/main/java/eu/faircode/email/FragmentMessages.java index 4dfb41d85c..7e7c2c868a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentMessages.java +++ b/app/src/main/java/eu/faircode/email/FragmentMessages.java @@ -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> 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 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 dups = duplicates.get(hash); + for (List dups : duplicates.values()) { int base = 0; for (int i = 0; i < dups.size(); i++) if (dups.get(i).folder == folder) { diff --git a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java index f7d02fbe26..081def940a 100644 --- a/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java +++ b/app/src/main/java/eu/faircode/email/FragmentOptionsMisc.java @@ -519,8 +519,8 @@ public class FragmentOptionsMisc extends FragmentBase implements SharedPreferenc @Override protected void onExecuted(Bundle args, SortedMap 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 protocols = new ArrayList<>(); - protocols.addAll(Arrays.asList(socket.getEnabledProtocols())); + List protocols = new ArrayList<>(Arrays.asList(socket.getEnabledProtocols())); - List ciphers = new ArrayList<>(); - ciphers.addAll(Arrays.asList(socket.getEnabledCipherSuites())); + List ciphers = new ArrayList<>(Arrays.asList(socket.getEnabledCipherSuites())); for (String p : socket.getSupportedProtocols()) { boolean enabled = protocols.contains(p); diff --git a/app/src/main/java/eu/faircode/email/Log.java b/app/src/main/java/eu/faircode/email/Log.java index abd931bdb9..cc45df08d3 100644 --- a/app/src/main/java/eu/faircode/email/Log.java +++ b/app/src/main/java/eu/faircode/email/Log.java @@ -251,8 +251,8 @@ public class Log { static void breadcrumb(String name, Map crumb) { try { Map ocrumb = new HashMap<>(); - for (String key : crumb.keySet()) - ocrumb.put(key, crumb.get(key)); + for (Map.Entry entry : crumb.entrySet()) + ocrumb.put(entry.getKey(), entry.getValue()); Bugsnag.leaveBreadcrumb(name, ocrumb, BreadcrumbType.LOG); } catch (Throwable ex) { ex.printStackTrace(); diff --git a/app/src/main/java/eu/faircode/email/MessageClassifier.java b/app/src/main/java/eu/faircode/email/MessageClassifier.java index 16bb8cb9d0..24c25b7771 100644 --- a/app/src/main/java/eu/faircode/email/MessageClassifier.java +++ b/app/src/main/java/eu/faircode/email/MessageClassifier.java @@ -226,14 +226,15 @@ public class MessageClassifier { DB db = DB.getInstance(context); int words = state.words.size() - texts.size() - 1; List chances = new ArrayList<>(); - for (String clazz : state.classStats.keySet()) { + for (Map.Entry 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 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 msgids = accountMsgIds.get(account); + for (Map.Entry> entry : accountMsgIds.entrySet()) { + Long account = entry.getKey(); + List msgids = entry.getValue(); Log.i("Classifier cleanup account=" + account + " count=" + msgids.size()); for (String msgid : new ArrayList<>(msgids)) { List 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> 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 classFrequency = wordClassFrequency.get(account).get(word); - for (String clazz : classFrequency.keySet()) { - Frequency f = classFrequency.get(clazz); + for (Map.Entry>> entry : wordClassFrequency.entrySet()) + for (String word : entry.getValue().keySet()) { + Map classFrequency = entry.getValue().get(word); + for (Map.Entry 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> 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 map) throws JSONException { JSONObject jmap = new JSONObject(); - for (String key : map.keySet()) - jmap.put(key, map.get(key)); + for (Map.Entry entry : map.entrySet()) + jmap.put(entry.getKey(), entry.getValue()); return jmap; }