Skip to content

Commit

Permalink
perf: replace std::pow(x, 0.25) with std::sqrt(std::sqrt(x)) (#1150)
Browse files Browse the repository at this point in the history
`powf64` is relatively slow. This change improves the performance of `ActsBenchmarkEigenStepper` by about 10%, the performance impact on the more real-world propagation with navigation (as in the propagation example with the generic detector), seems negligible.

Overall I think it's probably still worth adding.
  • Loading branch information
paulgessinger committed Feb 21, 2022
1 parent f9dbc02 commit de6af39
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 17 deletions.
17 changes: 9 additions & 8 deletions Core/include/Acts/Propagator/EigenStepper.ipp
Original file line number Diff line number Diff line change
Expand Up @@ -198,10 +198,10 @@ Acts::Result<double> Acts::EigenStepper<E, A>::step(
}

stepSizeScaling =
std::min(std::max(0.25, std::pow((state.options.tolerance /
std::abs(2. * error_estimate)),
0.25)),
4.);
std::min(std::max(0.25f, std::sqrt(std::sqrt(static_cast<float>(
state.options.tolerance /
std::abs(2. * error_estimate))))),
4.0f);

state.stepping.stepSize = state.stepping.stepSize * stepSizeScaling;

Expand Down Expand Up @@ -258,10 +258,11 @@ Acts::Result<double> Acts::EigenStepper<E, A>::step(
ConstrainedStep::Type::accuracy) {
state.stepping.stepSize =
state.stepping.stepSize *
std::min(std::max(0.25, std::pow((state.options.tolerance /
std::abs(error_estimate)),
0.25)),
4.);
std::min(
std::max(0.25f,
std::sqrt(std::sqrt(static_cast<float>(
state.options.tolerance / std::abs(error_estimate))))),
4.0f);
}
return h;
}
Expand Down
20 changes: 11 additions & 9 deletions Examples/Python/tests/root_file_hashes.txt
Original file line number Diff line number Diff line change
@@ -1,13 +1,15 @@

test_ckf_tracks_example_full_seeding__performance_seeding_trees.root: 938bcc9b9425b12c620f5d0efa2c592817dfe92a18c309e97aa9d87412918620
test_ckf_tracks_example_full_seeding__trackstates_ckf.root: 2faceafd4a521ff4030557301723e29c3d870edad052965eb644b824b57e2146
test_ckf_tracks_example_full_seeding__trackstates_ckf.root: f7cd38850d5334326cd5be9b9428435ed59fb3617787a97ec306239b458d921b
test_ckf_tracks_example_truth_estimate__performance_seeding_trees.root: 5c0cf9e84af64e6814ab1ddf4cbaf4be6008ad8b2371b5b0241085b19d0fc52c
test_ckf_tracks_example_truth_estimate__performance_seeding_trees.root: 5c0cf9e84af64e6814ab1ddf4cbaf4be6008ad8b2371b5b0241085b19d0fc52c
test_ckf_tracks_example_truth_estimate__trackstates_ckf.root: ac4485c09a68fca3d056cb8d9adb81695e68d822629e48c71fd2b6d2bbd31f88
test_ckf_tracks_example_truth_estimate__trackstates_ckf.root: e13732621f876af3991ad825769e5b4e0bac91dddf8591f256d63bb882f5e860
test_ckf_tracks_example_truth_smeared__trackstates_ckf.root: cc6bc5fc00c628f17f2dc9758faef6bb6468e831e796e149fb361438d538ab48
test_ckf_tracks_example_full_seeding__tracksummary_ckf.root: 295929580cadd576233f2d707a879e18e6f4d3fbc4c29c72d1dc7302c115c378
test_ckf_tracks_example_truth_estimate__tracksummary_ckf.root: ac5d6ef0d628d7556e5361c6cfb39ff3209ab028d62e47e84788f8afc2f215b1
test_ckf_tracks_example_truth_smeared__tracksummary_ckf.root: de1409fb3aa4fc0b1e0eb5f162b842a79dc0fed2d92394f23ee2e7854db2cdd3
test_ckf_tracks_example_full_seeding__tracksummary_ckf.root: 6ac61a86ded835406ad5d97b26503c789933bb1fca3e5131061149a3cd3fa14b
test_ckf_tracks_example_truth_estimate__tracksummary_ckf.root: 8d7872c55b49c73130c97ce1df51eb4846cc1f080c4c834516278ffcad8f7e3e
test_ckf_tracks_example_truth_smeared__tracksummary_ckf.root: f7a65614bfdd7daed69e764f22c03999aca3fab6b8ce698eb93767e33f7afbe4



test_fatras__fatras_particles_final.root: 09b0d46ad7641fc5af97650cdcbf0e6c85966933a2e1b2bfcf7fbb9c6d90b2e1
test_fatras__fatras_particles_initial.root: 712a41d95ed1fccafccf708afddcd2177793934bb80cd40b1d99b532c7a21031
Expand Down Expand Up @@ -42,11 +44,11 @@ test_root_clusters_writer[configKwConstructor]__clusters.root: 7e452af7243d282dd
test_root_clusters_writer[kwargsConstructor]__clusters.root: 7e452af7243d282dd0a8f5aa2844e150ef44364980bf3641718899068a1a1ecb
test_root_material_writer__material.root: e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855

test_truth_tracking[0.0]__trackstates_fitter.root: 1360cf05daee1d3dc49f21535d5129fbabc3e8b0b5d6873926e3e8d4a63322c1
test_truth_tracking[0.0]__tracksummary_fitter.root: 178b6efad2be53174f00a0567c3dbde3dac9f4494c053fa73cd981b9f6e01b81
test_truth_tracking[0.0]__trackstates_fitter.root: 58249c45808c38839513fc4e4eeb9108ede4485598526b25ec7b748c473c509d
test_truth_tracking[0.0]__tracksummary_fitter.root: 7cb528b8659102815899e0b65ecef64596f3fe3e389e6463ab0b344c6a57cad3
test_truth_tracking[0.0]__performance_track_finder.root: 76a990d595b6e097da2bed447783bd63044956e5649a5dd6fd7a6a3434786877
test_truth_tracking[1000.0]__trackstates_fitter.root: 485a5b7541b7d9a7d15186871c205d0cc0eba094eb5a24d2384e39924657d791
test_truth_tracking[1000.0]__tracksummary_fitter.root: 38b11893b41f6bf029012e9c93c48f950779669f8e8d8fe7dd1ae775a42595d2
test_truth_tracking[1000.0]__trackstates_fitter.root: 2d07f506aeb02301311b407197167994ca43b2c2775caf80874fb0581872db81
test_truth_tracking[1000.0]__tracksummary_fitter.root: ab1dfaa084206d3a91c7038ab3a6795b1dc83f62353cb017d1e7a30e4ee5957d
test_truth_tracking[1000.0]__performance_track_finder.root: 76a990d595b6e097da2bed447783bd63044956e5649a5dd6fd7a6a3434786877

test_digitization_example_input__measurements.root: ccc92f0ad538d1b62d98f19f947970bcc491843e54d8ffeed16ad2e226b8caee
Expand Down

0 comments on commit de6af39

Please sign in to comment.