From 1198a2583b985dbcbaea41a0b26f724a23ecb129 Mon Sep 17 00:00:00 2001 From: Kohsuke Yatoh Date: Wed, 20 Jul 2022 06:43:39 +0000 Subject: [PATCH] Add perf test for Typeface with variation axes. std::unordered_set consumes considerable memory in minikin, as it requires at least 40 bytes (on aarch64) per instance. We'd like to optimize it. This CL adds perf test to make sure that the latency does not regress by the memory optimization. Bug: 174672300 Test: atest CorePerfTests:android.graphics.perftests.TypefaceCreatePerfTest Change-Id: I5585d058db6195efc05e0f0be3de49b32818414a --- .../perftests/TypefaceCreatePerfTest.java | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceCreatePerfTest.java b/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceCreatePerfTest.java index e83c64c37678a..9e0cf3978b0a0 100644 --- a/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceCreatePerfTest.java +++ b/apct-tests/perftests/core/src/android/graphics/perftests/TypefaceCreatePerfTest.java @@ -16,10 +16,13 @@ package android.graphics.perftests; +import static org.junit.Assume.assumeNotNull; + import android.content.Context; import android.content.res.AssetManager; import android.content.res.Resources; import android.graphics.Typeface; +import android.graphics.fonts.FontVariationAxis; import android.perftests.utils.BenchmarkState; import android.perftests.utils.PerfStatusReporter; @@ -39,6 +42,8 @@ import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; +import java.util.Arrays; +import java.util.List; @LargeTest @RunWith(AndroidJUnit4.class) @@ -140,4 +145,18 @@ public class TypefaceCreatePerfTest { } } + @Test + public void testCreate_fromTypefaceWithVariation() { + BenchmarkState state = mPerfStatusReporter.getBenchmarkState(); + final List axes = Arrays.asList( + new FontVariationAxis("wght", 100f), + new FontVariationAxis("wdth", 0.8f)); + + while (state.keepRunning()) { + Typeface face = Typeface.createFromTypefaceWithVariation(Typeface.SANS_SERIF, axes); + // Make sure that the test device has variable fonts. + assumeNotNull(face); + } + } + }