| // Copyright (c) 2016, 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; | |
| import com.android.tools.r8.graph.DexItemFactory; | |
| import com.android.tools.r8.shaking.ProguardConfigurationParser; | |
| import com.android.tools.r8.utils.Reporter; | |
| import com.android.tools.r8.utils.Timing; | |
| import java.nio.file.Paths; | |
| /** | |
| * Benchmark for testing ability to and speed of parsing Proguard keep files. | |
| */ | |
| public class ReadKeepFile { | |
| private static final String DEFAULT_KEEP_FILE_NAME = "build/proguard.cfg"; | |
| final Timing timing = new Timing("ReadKeepFile"); | |
| private void readProguardKeepFile(String fileName) { | |
| System.out.println(" - reading " + fileName); | |
| timing.begin("Reading " + fileName); | |
| new ProguardConfigurationParser(new DexItemFactory(), new Reporter()) | |
| .parse(Paths.get(fileName)); | |
| timing.end(); | |
| } | |
| public static void main(String[] args) { | |
| new ReadKeepFile().run(args); | |
| } | |
| private void run(String[] args) { | |
| System.out.println("ProguardKeepRuleParser benchmark."); | |
| if (args.length == 0) { | |
| readProguardKeepFile(DEFAULT_KEEP_FILE_NAME); | |
| } else { | |
| for (String name : args) { | |
| readProguardKeepFile(name); | |
| } | |
| } | |
| timing.report(); | |
| } | |
| } |