ab9575d8a6
This is a no-op "prefactor" of `mj_crb` to reduce the number of lines changed in the upcoming sleeping CL. The main change here is that `mj_crb` now avoids accessing the model and data pointer repeatedly, but instead has the input and output pointers explicitly declared as local variables. A benchmark test found a healthy **14% perf bump** due to two changes: - Adding `restrict` to `mju_mulInertVec` - The function-local pointers. Adding `restrict` to the local pointers had no effect. Note that `mj_crb` is not a particularly expensive function so these speed bumps are not significant per se, but rather indicative of possible future gains with these techniques. ``` Benchmark Time(ns) CPU(ns) Iterations --------------------------------------------------------------- ORGINAL BASELINE BM_CRB_BASELINE_mean 4325 4348 993200 230.052k items/s BASELINE + RESTRICT BM_CRB_BASELINE_mean 4057 4090 1186150 244.573k items/s LOCAL POINTERS + RESTRICT BM_CRB_mean 3772 3800 1001750 263.209k items/s ``` PiperOrigin-RevId: 815798225 Change-Id: Iffdf57b544e8e10562807c617f73ca4ccd1c614f
81 lines
2.2 KiB
CMake
81 lines
2.2 KiB
CMake
# Copyright 2021 DeepMind Technologies Limited
|
|
#
|
|
# 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
|
|
#
|
|
# https://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.
|
|
|
|
|
|
mujoco_test(
|
|
ccd_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers ccd
|
|
)
|
|
|
|
mujoco_test(
|
|
step_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
thread_performance_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
parse_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
engine_util_spatial_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
factorI_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
inertia_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
iszero_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
solveLD_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
crb_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|
|
|
|
mujoco_test(
|
|
engine_util_sparse_benchmark_test
|
|
MAIN_TARGET benchmark::benchmark_main
|
|
ADDITIONAL_LINK_LIBRARIES benchmark::benchmark absl::core_headers
|
|
)
|