| // Copyright (c) 2022, the R8 project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| package com.android.tools.r8.benchmarks.desugaredlib; |
| |
| import com.android.tools.r8.StringResource; |
| import com.android.tools.r8.TestParameters; |
| import com.android.tools.r8.benchmarks.BenchmarkBase; |
| import com.android.tools.r8.benchmarks.BenchmarkConfig; |
| import com.android.tools.r8.benchmarks.BenchmarkDependency; |
| import com.android.tools.r8.benchmarks.BenchmarkEnvironment; |
| import com.android.tools.r8.benchmarks.BenchmarkTarget; |
| import com.android.tools.r8.utils.AndroidApiLevel; |
| import com.google.common.collect.ImmutableList; |
| import java.nio.file.Paths; |
| import java.util.List; |
| import java.util.stream.Collectors; |
| import java.util.stream.Stream; |
| import org.junit.runner.RunWith; |
| import org.junit.runners.Parameterized; |
| import org.junit.runners.Parameterized.Parameters; |
| |
| @RunWith(Parameterized.class) |
| public class LegacyDesugaredLibraryBenchmark extends BenchmarkBase { |
| |
| private static final BenchmarkDependency androidJar = BenchmarkDependency.getAndroidJar30(); |
| private static final BenchmarkDependency legacyConf = |
| new BenchmarkDependency( |
| "legacyConf", "desugar_jdk_libs_legacy", Paths.get("third_party", "openjdk")); |
| |
| public LegacyDesugaredLibraryBenchmark(BenchmarkConfig config, TestParameters parameters) { |
| super(config, parameters); |
| } |
| |
| @Parameters(name = "{0}") |
| public static List<Object[]> data() { |
| return parametersFromConfigs(configs()); |
| } |
| |
| public static List<BenchmarkConfig> configs() { |
| return ImmutableList.of( |
| BenchmarkConfig.builder() |
| .setName("LegacyDesugaredLibraryConf") |
| .setTarget(BenchmarkTarget.D8) |
| .setFromRevision(12150) |
| .setMethod(LegacyDesugaredLibraryBenchmark::run) |
| .addDependency(androidJar) |
| .addDependency(legacyConf) |
| .measureRunTime() |
| .build()); |
| } |
| |
| public static void run(BenchmarkEnvironment environment) throws Exception { |
| runner(environment.getConfig()) |
| .setWarmupIterations(1) |
| .setBenchmarkIterations(10) |
| .reportResultSum() |
| .run( |
| results -> |
| testForD8(environment.getTemp(), Backend.DEX) |
| .setMinApi(AndroidApiLevel.B) |
| .addLibraryFiles(androidJar.getRoot(environment).resolve("android.jar")) |
| .apply( |
| b -> |
| b.getBuilder() |
| .addDesugaredLibraryConfiguration( |
| StringResource.fromFile( |
| legacyConf |
| .getRoot(environment) |
| .resolve("desugar_jdk_libs.json")))) |
| .benchmarkCompile(results)); |
| } |
| |
| static class TestClass { |
| |
| public static void main(String[] args) { |
| System.out.println(Stream.of("Hello", "world!").collect(Collectors.joining(" "))); |
| } |
| } |
| } |