Class SpecializationService
java.lang.Object
org.apache.druid.query.monomorphicprocessing.SpecializationService
Manages class specialization during query processing.
Usage:
String runtimeShape = stringRuntimeShape.of(bufferAggregator);
SpecializationState specializationState = 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:
-
Method Summary
Modifier and TypeMethodDescriptionstatic <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 Details
-
getSpecializationState
public static <T> SpecializationState<T> getSpecializationState(Class<? extends T> prototypeClass, String runtimeShape) - Type Parameters:
T- type of query processing algorithm- See Also:
-
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:
-