From ed9e6c6bb9a3360b360df3737e115d00227b2c06 Mon Sep 17 00:00:00 2001 From: Menghan Date: Tue, 4 Nov 2014 15:43:32 +0800 Subject: [PATCH] optimize: use StringBuilder Long continuious Chinese text will cost java lots of time if concat string using '+=' --- .../huaban/analysis/jieba/JiebaSegmenter.java | 22 +++++++++---------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/main/java/com/huaban/analysis/jieba/JiebaSegmenter.java b/src/main/java/com/huaban/analysis/jieba/JiebaSegmenter.java index 45a6a51..b4e2a54 100644 --- a/src/main/java/com/huaban/analysis/jieba/JiebaSegmenter.java +++ b/src/main/java/com/huaban/analysis/jieba/JiebaSegmenter.java @@ -173,45 +173,45 @@ public List sentenceProcess(String sentence) { int x = 0; int y = 0; - String buf = ""; + String buf; + StringBuilder sb = new StringBuilder(); while (x < N) { y = route.get(x).key + 1; String lWord = sentence.substring(x, y); if (y - x == 1) - buf += lWord; + sb.append(lWord); else { - if (buf.length() > 0) { + if (sb.length() > 0) { + buf = sb.toString(); + sb = new StringBuilder(); if (buf.length() == 1) { - tokens.add(buf.toString()); - buf = ""; + tokens.add(buf); } else { if (wordDict.containsWord(buf)) { - tokens.add(buf.toString()); + tokens.add(buf); } else { finalSeg.cut(buf, tokens); } - buf = ""; } } tokens.add(lWord); } x = y; } + buf = sb.toString(); if (buf.length() > 0) { if (buf.length() == 1) { - tokens.add(buf.toString()); - buf = ""; + tokens.add(buf); } else { if (wordDict.containsWord(buf)) { - tokens.add(buf.toString()); + tokens.add(buf); } else { finalSeg.cut(buf, tokens); } - buf = ""; } }