Class SpecializationService
- java.lang.Object
-
- org.apache.druid.query.monomorphicprocessing.SpecializationService
-
public final class SpecializationService extends Object
Manages class specialization during query processing. Usage: String runtimeShape = stringRuntimeShape.of(bufferAggregator); SpecializationStatespecializationState = SpecializationService.getSpecializationState( ProcessingAlgorithmImpl.class, runtimeShape ); ProcessingAlgorithm algorithm = specializationState.getSpecializedOrDefault(new ProcessingAlgorithmImpl()); long loopIterations = new ProcessingAlgorithmImpl().run(bufferAggregator, ...); specializationState.accountLoopIterations(loopIterations); ProcessingAlgorithmImpl.class, passed as prototypeClass to getSpecializationState(java.lang.Class<? extends T>, java.lang.String)
methods must have public no-arg constructor and must be stateless (no fields).- See Also:
SpecializationState
-
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static <T> SpecializationState<T>
getSpecializationState(Class<? extends T> prototypeClass, String runtimeShape)
static <T> SpecializationState<T>
getSpecializationState(Class<? extends T> prototypeClass, String runtimeShape, com.google.common.collect.ImmutableMap<Class<?>,Class<?>> classRemapping)
-
-
-
Method Detail
-
getSpecializationState
public static <T> SpecializationState<T> getSpecializationState(Class<? extends T> prototypeClass, String runtimeShape)
- Type Parameters:
T
- type of query processing algorithm- See Also:
class-level javadoc for details
-
getSpecializationState
public static <T> SpecializationState<T> getSpecializationState(Class<? extends T> prototypeClass, String runtimeShape, com.google.common.collect.ImmutableMap<Class<?>,Class<?>> classRemapping)
- Parameters:
classRemapping
- classes, that should be replaced in the bytecode of the given prototypeClass when specialized- See Also:
getSpecializationState(Class, String)
-
-