前提・実現したいこと
現在kuromojiをandroidにて利用しようとしてます。
しかし、Activityで利用した場合、なぜか凄く遅いです。
試しに同じコードを単体テストで動かした場合はそれほど時間はかかりませんでした。
どのようにしたらActivity上でも早く動かすことができるでしょうか?
また、なぜActivity上だとこんなにも遅いんでしょうか?
ご助言いただければ幸いです。
発生している問題・エラーメッセージ
単体テスト時
413ms token作成
418ms ネコ
Activity上で動かした時
6330ms token作成
6333ms ネコ
該当のソースコード
java
1//単体テスト 2import com.atilika.kuromoji.ipadic.Token; 3import com.atilika.kuromoji.ipadic.Tokenizer; 4import org.junit.Test; 5import java.util.List; 6import static org.junit.Assert.*; 7 8public class ExampleUnitTest { 9 @Test 10 public void speedTest() { 11 long start = System.currentTimeMillis(); 12 Tokenizer tokenizer=new Tokenizer(); 13 long end = System.currentTimeMillis(); 14 System.out.println((end - start) + "ms token作成"); 15 16 List<Token> tokens = tokenizer.tokenize("猫"); 17 StringBuilder outStr = new StringBuilder(); 18 for (Token token : tokens) { 19 20 outStr.append(token.getReading()); 21 } 22 end = System.currentTimeMillis(); 23 System.out.println((end - start) + "ms "+outStr); 24 } 25}
java
1//Activity 2import android.support.v7.app.AppCompatActivity; 3import android.os.Bundle; 4 5import com.atilika.kuromoji.ipadic.Token; 6import com.atilika.kuromoji.ipadic.Tokenizer; 7 8import java.util.List; 9 10public class MainActivity extends AppCompatActivity { 11 12 @Override 13 protected void onCreate(Bundle savedInstanceState) { 14 super.onCreate(savedInstanceState); 15 setContentView(R.layout.activity_main); 16 17 long start = System.currentTimeMillis(); 18 Tokenizer tokenizer=new Tokenizer(); 19 long end = System.currentTimeMillis(); 20 System.out.println((end - start) + "ms token作成"); 21 22 List<Token> tokens = tokenizer.tokenize("猫"); 23 StringBuilder outStr = new StringBuilder(); 24 for (Token token : tokens) { 25 26 outStr.append(token.getReading()); 27 } 28 end = System.currentTimeMillis(); 29 System.out.println((end - start) + "ms "+outStr); 30 } 31}
補足情報(FW/ツールのバージョンなど)
windows10 64bit
Android Studio 3.4.1
gradle:3.4.1
com.atilika.kuromoji:kuromoji-ipadic:0.9.0
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。