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

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

Merge "Add perf test for Korean phrase line break"

parents 9ad8f025 656e8fca
Loading
Loading
Loading
Loading
+127 −0
Original line number Diff line number Diff line
@@ -58,6 +58,19 @@ public class StaticLayoutPerfTest {
            + "180℃で揚げ、衣がきつね色になったら引き上げて、油を切る。"
            + "盛り付けて出来上がり。";

    public static final String KO_TEXT_SHORT = "모든 인류 구성원의 천부의 존엄성과 동등하고 양도할 수 없는 권리를";
    // About 530 chars
    public static final String KO_TEXT_LONG = "모든 인류 구성원의 천부의 존엄성과 동등하고 양도할 수 없는 권리를"
            + " 인정하는 것이 세계의 자유, 정의 및 평화의 기초이며, 인권에 대한 무시와 경멸이 인류의 양심을 격분시키는"
            + " 만행을 초래하였으며, 인간이 언론과 신앙의 자유, 그리고 공포와 결핍으로부터의 자유를 누릴 수 있는 세계의"
            + " 도래가 모든 사람들의 지고한 열망으로서 천명되어 왔으며, 인간이 폭정과 억압에 대항하는 마지막 수단으로서"
            + " 반란을 일으키도록 강요받지 않으려면, 법에 의한 통치에 의하여 인권이 보호되어야 하는 것이 필수적이며,"
            + "국가간에 우호관계의 발전을 증진하는 것이 필수적이며, 국제연합의 모든 사람들은 그 헌장에서 기본적 인권,"
            + " 인간의 존엄과 가치, 그리고 남녀의 동등한 권리에 대한 신념을 재확인하였으며, 보다 폭넓은 "
            + "자유속에서 사회적 진보와 보다 나은 생활수준을 증진하기로 다짐하였고, 회원국들은 국제연합과 협력하여 인권과"
            + " 기본적 자유의 보편적 존중과 준수를 증진할 것을 스스로 서약하였으며, 이러한 권리와 자유에 대한 공통의"
            + " 이해가 이 서약의 완전한 이행을 위하여 가장 중요하므로,";

    @Rule
    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();

@@ -560,4 +573,118 @@ public class StaticLayoutPerfTest {
                    .build();
        }
    }

    @Test
    public void testCreate_KOText_Phrase_Short() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_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("ko-KR"));
        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_KOText_Phrase_Long() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_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("ko-KR"));
        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_KOText_Phrase_LongLong() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_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("ko-KR"));
        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_KOText_NoPhrase_Short() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_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("ko-KR"));
        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_KOText_NoPhrase_Long() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_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("ko-KR"));
        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_KOText_NoPhrase_LongLong() {
        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
        final String text = KO_TEXT_LONG.repeat(20);  // 520 * 20 = 10400 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("ko-KR"));
        while (state.keepRunning()) {
            state.pauseTiming();
            Canvas.freeTextLayoutCaches();
            state.resumeTiming();
            StaticLayout.Builder.obtain(text, 0, text.length(), paint, TEXT_WIDTH)
                    .setLineBreakConfig(config)
                    .build();
        }
    }
}