From 1f646e4f6854d03ce1b55a7af2659b3483f677bc Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Mon, 30 Jan 2023 09:25:57 +0100 Subject: [PATCH] Reduce memory churn in RDRPOSTagger --- .../src/main/java/com/github/datquocnguyen/FWObject.java | 9 +++++++++ .../main/java/com/github/datquocnguyen/RDRPOSTagger.java | 4 +++- .../src/main/java/com/github/datquocnguyen/Utils.java | 8 +++----- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/third_party/src/main/java/com/github/datquocnguyen/FWObject.java b/third_party/src/main/java/com/github/datquocnguyen/FWObject.java index 4d89465d..9017f23a 100644 --- a/third_party/src/main/java/com/github/datquocnguyen/FWObject.java +++ b/third_party/src/main/java/com/github/datquocnguyen/FWObject.java @@ -36,4 +36,13 @@ public class FWObject context = new String[13]; } } + + public void reset(boolean check) { + if (check) { + System.arraycopy(contextPrototype, 0, context, 0, 13); + } + else { + Arrays.fill(context, null); + } + } } diff --git a/third_party/src/main/java/com/github/datquocnguyen/RDRPOSTagger.java b/third_party/src/main/java/com/github/datquocnguyen/RDRPOSTagger.java index e51f44ec..a0bea5b2 100644 --- a/third_party/src/main/java/com/github/datquocnguyen/RDRPOSTagger.java +++ b/third_party/src/main/java/com/github/datquocnguyen/RDRPOSTagger.java @@ -103,8 +103,10 @@ public class RDRPOSTagger var initialTags = InitialTagger.EnInitTagger4Sentence(FREQDICT, sentence); String[] tags = new String[initialTags.length]; + FWObject object = new FWObject(true); + for (int i = 0; i < initialTags.length; i++) { - FWObject object = Utils.getObject(sentence, initialTags, initialTags.length, i); + Utils.getObject(object, sentence, initialTags, initialTags.length, i); tags[i] = findFiredNode(object).conclusion; } diff --git a/third_party/src/main/java/com/github/datquocnguyen/Utils.java b/third_party/src/main/java/com/github/datquocnguyen/Utils.java index e422b5ad..4cd91d58 100644 --- a/third_party/src/main/java/com/github/datquocnguyen/Utils.java +++ b/third_party/src/main/java/com/github/datquocnguyen/Utils.java @@ -123,9 +123,9 @@ public class Utils return condition; } - public static FWObject getObject(String[] words, String[] tags, int size, int index) + public static FWObject getObject(FWObject object, String[] words, String[] tags, int size, int index) { - FWObject object = new FWObject(true); + object.reset(true); if (index > 1) { object.context[4] = words[index-2]; @@ -175,9 +175,7 @@ public class Utils else return ""; } - String conclusion = str.substring(str.indexOf("\"") + 1, - str.length() - 1); - return conclusion; + return str.substring(str.indexOf("\"") + 1, str.length() - 1); } public static void main(String[] args)