Loading apct-tests/perftests/core/src/android/text/StaticLayoutPerfTest.java +127 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); } } } Loading
apct-tests/perftests/core/src/android/text/StaticLayoutPerfTest.java +127 −0 Original line number Diff line number Diff line Loading @@ -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(); Loading Loading @@ -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(); } } }