Package net.imglib2.loops
Class FastCursorRandomAccessLoops
- java.lang.Object
-
- net.imglib2.loops.FastCursorRandomAccessLoops
-
final class FastCursorRandomAccessLoops extends java.lang.ObjectThis class aims to avoid performance problems of the Java just in time compilation when running a loop that executes an action on aCursorand multipleRandomAccesses. Such a loop might look like this:
Usually such a loop has significant performance problems when used together multiple different classes that implementwhile(--n >= 0) { A a = cursorA.next(); randomAccessB.setPosition( cursorA ); randomAccessC.setPosition( cursorA ); action.accept( a, randomAccessB.get(), randomAccessC.get() ); }Cursor,RandomAccess, and action interfaces. This is caused by the JIT-compiler who simple performs badly in these situations. This class solves these performance problems by holding multiple copies of the bytecode of these loops. A bytecode copy can be individually optimized by the Java JIT compiler to perform optimally for a specific use case.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classFastCursorRandomAccessLoops.OneCursorLoop<A>static classFastCursorRandomAccessLoops.ThreeCursorLoop<A,B,C>static classFastCursorRandomAccessLoops.TwoCursorLoop<A,B>
-
Field Summary
Fields Modifier and Type Field Description private static java.util.List<ClassCopyProvider<java.util.function.LongConsumer>>factories
-
Constructor Summary
Constructors Modifier Constructor Description privateFastCursorRandomAccessLoops()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description private static java.util.function.LongConsumercreateLoop(java.lang.Object action, Cursor<?> cursor, java.util.List<? extends RandomAccess<?>> randomAccesses)(package private) static voidloop(java.lang.Object action, long n, Cursor<?> cursor, java.util.List<? extends RandomAccess<?>> randomAccesses)
-
-
-
Field Detail
-
factories
private static final java.util.List<ClassCopyProvider<java.util.function.LongConsumer>> factories
-
-
Method Detail
-
loop
static void loop(java.lang.Object action, long n, Cursor<?> cursor, java.util.List<? extends RandomAccess<?>> randomAccesses)
-
createLoop
private static java.util.function.LongConsumer createLoop(java.lang.Object action, Cursor<?> cursor, java.util.List<? extends RandomAccess<?>> randomAccesses)
-
-