Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 859bea28 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add JP phrase perf test case"

parents 292b8f11 2ab63a0f
Loading
Loading
Loading
Loading
+128 −0
Original line number Diff line number Diff line
@@ -19,6 +19,8 @@ package android.text;
import android.graphics.Canvas;
import android.graphics.RecordingCanvas;
import android.graphics.RenderNode;
import android.graphics.text.LineBreakConfig;
import android.os.LocaleList;
import android.perftests.utils.BenchmarkState;
import android.perftests.utils.PerfStatusReporter;

@@ -43,6 +45,19 @@ public class StaticLayoutPerfTest {

    public StaticLayoutPerfTest() {}

    public static final String JP_TEXT_SHORT = "日本語でのパフォーマンス計測のための例文です。";
    // About 350 chars
    public static final String JP_TEXT_LONG = "日本語でのパフォーマンス計測のための文章ですが、長いです。"
            + "長い文章が必要なのですが、特に書くことが思いつかないので、コロッケの作り方でも書こうと思います。"
            + "じゃがいもを茹でて潰しておきます。私は少し形が残っているほうが好きなので、ある程度のところで潰すのを"
            + "やめます。別のフライパンで軽く塩をして玉ねぎのみじん切りを炒め、透き通ったら、一度取り出します。"
            + "きれいにしたフライパンに、豚ひき肉を入れてあまりイジらずに豚肉を炒めます。"
            + "しっかり火が通ったら炒めた玉ねぎを戻し入れ、塩コショウで味を決めます。"
            + "炒めた肉玉ねぎとじゃがいもをよく混ぜて、1個あたり100gになるように整形します。"
            + "整形したタネに小麦粉、卵、パン粉をつけて揚げます。"
            + "180℃で揚げ、衣がきつね色になったら引き上げて、油を切る。"
            + "盛り付けて出来上がり。";

    @Rule
    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();

@@ -432,4 +447,117 @@ public class StaticLayoutPerfTest {
        }
    }

    @Test
    public void testCreate_JPText_Phrase_Short() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_SHORT;
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }

    @Test
    public void testCreate_JPText_Phrase_Long() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_LONG;
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }

    @Test
    public void testCreate_JPText_Phrase_LongLong() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_LONG.repeat(20);  // 250 * 20 = 7000 chars
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_PHRASE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }

    @Test
    public void testCreate_JPText_NoPhrase_Short() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_SHORT;
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }

    @Test
    public void testCreate_JPText_NoPhrase_Long() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_LONG;
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }

    @Test
    public void testCreate_JPText_NoPhrase_LongLong() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = JP_TEXT_LONG.repeat(20);  // 250 * 20 = 7000 chars
        final LineBreakConfig config = new LineBreakConfig.Builder()
                .setLineBreakWordStyle(LineBreakConfig.LINE_BREAK_WORD_STYLE_NONE)
                .build();
        final TextPaint paint = new TextPaint(PAINT);
        paint.setTextLocales(LocaleList.forLanguageTags("ja-JP"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }
}