aboutsummaryrefslogtreecommitdiffstats
path: root/lib/string_helpers.c
diff options
context:
space:
mode:
authorKalesh Singh <[email protected]>2021-10-29 23:24:10 +0000
committerSteven Rostedt (VMware) <[email protected]>2021-11-02 00:45:11 +0000
commit8b5d46fd7a3892a2e71c9ba6330f1b46d533d0a0 (patch)
treeb327ba1d4003b14283af9b70d6091e03909519af /lib/string_helpers.c
parenttracing/osnoise: Remove PREEMPT_RT ifdefs from inside functions (diff)
downloadkernel-8b5d46fd7a3892a2e71c9ba6330f1b46d533d0a0.tar.gz
kernel-8b5d46fd7a3892a2e71c9ba6330f1b46d533d0a0.zip
tracing/histogram: Optimize division by constants
If the divisor is a constant use specific division functions to avoid extra branches when the trigger is hit. If the divisor constant but not a power of 2, the division can be replaced with a multiplication and shift in the following case: Let X = dividend and Y = divisor. Choose Z = some power of 2. If Y <= Z, then: X / Y = (X * (Z / Y)) / Z (Z / Y) is a constant (mult) which is calculated at parse time, so: X / Y = (X * mult) / Z The division by Z can be replaced by a shift since Z is a power of 2: X / Y = (X * mult) >> shift As long, as X < Z the results will not be off by more than 1. Link: https://lkml.kernel.org/r/[email protected] Suggested-by: Steven Rostedt <[email protected]> Signed-off-by: Kalesh Singh <[email protected]> Signed-off-by: Steven Rostedt (VMware) <[email protected]>
Diffstat (limited to 'lib/string_helpers.c')
0 files changed, 0 insertions, 0 deletions