From 712b8ede148c1a844a88ea6eec3b5ebde7c0d1fd Mon Sep 17 00:00:00 2001 From: Adam Brown Date: Thu, 23 Sep 2021 15:34:51 +0100 Subject: [PATCH] adding benchmarking script to start monitoring build times - makes use of the gradle-profiler to run the build multiple times - currently uses reduced warm up/iteration count as the build takes a long time, can be increased once the build time is reduced --- .gitignore | 1 + tools/benchmark/benchmark.profile | 39 +++++++++++++++++++++++++++++++ tools/benchmark/run_benchmark.sh | 33 ++++++++++++++++++++++++++ 3 files changed, 73 insertions(+) create mode 100644 tools/benchmark/benchmark.profile create mode 100755 tools/benchmark/run_benchmark.sh diff --git a/.gitignore b/.gitignore index 04d1b6fe06..935a3fc329 100644 --- a/.gitignore +++ b/.gitignore @@ -8,6 +8,7 @@ .idea/*.xml .DS_Store /build +/benchmark-out /captures .externalNativeBuild diff --git a/tools/benchmark/benchmark.profile b/tools/benchmark/benchmark.profile new file mode 100644 index 0000000000..ae27dc9f59 --- /dev/null +++ b/tools/benchmark/benchmark.profile @@ -0,0 +1,39 @@ +# +# Copyright 2021 New Vector Ltd +# +# 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. +# + +clean_assemble { + tasks = ["clean", ":vector:assembleGPlayDebug"] +} + +clean_assemble_build_cache { + tasks = ["clean", ":vector:assembleGPlayDebug"] + gradle-args = ["--build-cache"] +} + +clean_assemble_without_cache { + tasks = ["clean", ":vector:assembleGPlayDebug"] + gradle-args = ["--no-build-cache"] +} + +incremental_assemble_sdk_abi { + tasks = [":vector:assembleGPlayDebug"] + apply-abi-change-to = "matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/Matrix.kt" +} + +incremental_assemble_sdk_no_abi { + tasks = [":vector:assembleGPlayDebug"] + apply-non-abi-change-to = "matrix-sdk-android/src/main/java/org/matrix/android/sdk/api/Matrix.kt" +} diff --git a/tools/benchmark/run_benchmark.sh b/tools/benchmark/run_benchmark.sh new file mode 100755 index 0000000000..b6c81ee513 --- /dev/null +++ b/tools/benchmark/run_benchmark.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash + +# +# Copyright 2021 New Vector Ltd +# +# 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. +# + +if ! command -v gradle-profiler &> /dev/null +then + echo "gradle-profiler could not be found https://github.com/gradle/gradle-profiler" + exit +fi + +gradle-profiler \ + --benchmark \ + --project-dir . \ + --scenario-file tools/benchmark/benchmark.profile \ + --output-dir benchmark-out/output \ + --gradle-user-home benchmark-out/gradle-home \ + --warmups 3 \ + --iterations 3 \ + $1