diff options
author | Tobias Thierer <tobiast@google.com> | 2018-07-05 08:13:34 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2018-07-05 08:13:34 -0700 |
commit | 39bddf2a9f48524061716d83e90065e02e35a5b6 (patch) | |
tree | 1951437725415caeae8f29b25fdd5030cc0dc82b /benchmarks | |
parent | 0275e8e0081746d109427aa2b78af63d1a80c5ab (diff) | |
parent | f05daa6b1b3cf76f18a165e1ee4a4bcf1a5bb274 (diff) |
Merge "Add benchmark for System.getProperty() vs. AccessController/GetPropertyAction."
am: f05daa6b1b
Change-Id: If3d4667dcb5c00e3b0c5c72ae4aa9ad198fb284c
Diffstat (limited to 'benchmarks')
-rw-r--r-- | benchmarks/src/benchmarks/GetSystemPropertyBenchmark.java | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/benchmarks/src/benchmarks/GetSystemPropertyBenchmark.java b/benchmarks/src/benchmarks/GetSystemPropertyBenchmark.java new file mode 100644 index 0000000000..3a93285db3 --- /dev/null +++ b/benchmarks/src/benchmarks/GetSystemPropertyBenchmark.java @@ -0,0 +1,60 @@ +/* + * Copyright (C) 2018 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package benchmarks; + +import java.security.AccessController; + +import sun.security.action.GetPropertyAction; + +/** + * Compares performance of accessing system properties via + * legacy security code + * {@code AccessController.doPrivileged(new GetPropertyAction(key[, default]))} + * vs. direct invocation of {@code System.getProperty(key[, default])}. + * + * As of 2018-07, libcore carries some patches to perform such short-circuiting, + * so it's interesting to know how much better it performs. + */ +public class GetSystemPropertyBenchmark { + + public void timeSystem_getProperty_default(int reps) { + for (int i = 0; i < reps; i++) { + System.getProperty("user.language", "en"); + } + } + + public void timeSystem_getProperty(int reps) { + for (int i = 0; i < reps; i++) { + System.getProperty("user.region"); + } + } + + public void timeAccessController_getPropertyAction(int reps) { + for (int i = 0; i < reps; i++) { + AccessController.doPrivileged( + new GetPropertyAction("user.language", "en")); + } + } + + public void timeAccessController_getPropertyAction_default(int reps) { + for (int i = 0; i < reps; i++) { + AccessController.doPrivileged( + new GetPropertyAction("user.region")); + } + } + +} |