[
https://issues.apache.org/jira/browse/OPENNLP-1505?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17746446#comment-17746446
]
ASF GitHub Bot commented on OPENNLP-1505:
-----------------------------------------
kinow commented on code in PR #543:
URL: https://github.com/apache/opennlp/pull/543#discussion_r1272222441
##########
opennlp-tools/src/main/java/opennlp/tools/ml/model/Event.java:
##########
@@ -52,6 +52,23 @@ public Event(String outcome, String[] context, float[]
values) {
this.values = values;
}
+ /**
+ * Instantiates an {@link Event}.
+ *
+ * @param outcome The outcome to use. Must not be {@code null}.
+ * @param context The {@link CharSequence array} of context elements. Must
not be {@code null}.
+ * @param values The {@code float} array to use.
+ */
+ public Event(String outcome, CharSequence[] context, float[] values) {
+ this.outcome = Objects.requireNonNull(outcome, "outcome must not be null");
+ final String[] ctx = new String[context.length];
Review Comment:
Should we validate with `requireNonNull` here too? I think that gives a user
friendly message pointing that outcome must not be null, but here it will just
raise the NPE? (I think)
> Reduce object creation in NGramCharModel and StringUtil
> -------------------------------------------------------
>
> Key: OPENNLP-1505
> URL: https://issues.apache.org/jira/browse/OPENNLP-1505
> Project: OpenNLP
> Issue Type: Improvement
> Components: Language Detector
> Affects Versions: 2.2.0
> Reporter: Martin Wiesner
> Assignee: Martin Wiesner
> Priority: Major
> Fix For: 2.2.1
>
>
> During a profiling session, I noticed that many tests in
> opennlp.tools.langdetect take quite some time for execution. Digging deeper
> into those tests, it quickly became obvious that StringUtil#toLowerCase() was
> creating new Strings for every call of this method (see
> NGramCharModel#add(...) lines 99 to 108.
> Being called in NGramCharModel quite frequently, this resulted in creation of
> millions of String objects during building ngrams for given input.
> Aims:
> * Reduce objection creation and thus creation of millions of string objects
> * Improve runtime of the langdetect tests (and potentially others)
> Idea:
> * Use (Heap)CharBuffer instead of String so that underlying char arrays can
> be re-used, instead of copying the chars over to a new string for each
> "toLowerCase"...
> Note:
> * A corresponding patch / PR should be tested with/against the Evaluation
> suite.
> Comments welcome.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)