about the fast path and slow path
=?GB2312?B?UqimbWkgRm9yYXg=?=
forax at univ-mlv.fr
Fri Jul 20 03:48:24 PDT 2012
On 07/20/2012 05:12 AM, David Holmes wrote:
> On 20/07/2012 12:39 PM, ½¯³å wrote:
>> What is the fast path and slow path?
> Generally:
>
> "fast path" - a code path optimized for speed because it is the common case
>
> "slow path" - what we have to do when the "fast path" is not applicable
>
> For example:
>
> allocation:
> - fast path: if enough space bump a pointer
> - slow path: allocate a new thread-local allocation buffer then bump
> pointer
>
> monitor acquisition:
> - fast path: object is unlocked and unbiased so simply CAS in current
> thread ID into object header
> - slow path: object is unlocked but biased, so revoke bias and use
> BasicLock to lock
>
> classloading:
> - fast path: class already loaded, just check in system dictionary and
> return
> - slow path: class is not loaded, so load it
>
> And there are many other examples. And it isn't necessarily just a
> choice of two things: the slow path typically has many branches and
> different lengths depending on the exact circumstances.
Also, the JIT itself tend to consider the user code not called in the
interpreter as a slow path too.
segregating slow path and fast path is a generic optimization technique.
> David
R¨¦mi
More information about the hotspot-runtime-dev
mailing list