lkml.org 
[lkml]   [2014]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: [PATCH] optimize ktime_divns for constant divisors
On Wed, 3 Dec 2014, Robert Jarzmik wrote:

> Nicolas Pitre <nicolas.pitre@linaro.org> writes:
>
> > Let ktime_divns() use do_div() inline whenever the divisor is constant
> > and small enough. This will make things like ktime_to_us() and
> > ktime_to_ms() much faster.
>
> Hi Nicolas,
>
> I suppose the "small enough" is linked to the "!(div >> 32)" in your patch. Can
> I have the rationale which brought up this value, and if that value is universal
> across architectures (ie. x86/ppc/arm/...) ?

Yes. The do_div() function is defined to accept a 32-bit divisor only.
The out-of-line ktime_divns code does scale down both the dividend and
the divisor until the divisor is within 32 bits of magnitude before
calling do_div(). However the constness of the divisor is lost and the
optimised do_div (on ARM at least) doesn't get involved.

> And when you say "much faster", do you have figures to add to your commit
> message ?

No actual figure. But a wild guess would be around an order of
magnitude. See commit fa4adc6149 for an example of generated code.


Nicolas


\
 
 \ /
  Last update: 2014-12-03 22:01    [W:1.111 / U:1.428 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site