Hi:
When I use LTR, there are 72 features, 500 models and 200 million data. During 
use, LTR execution was found to be extremely slow, with each query above 5s.

In LTRScoringQuery. ModelWeight scorer method in class,

for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {

  final Feature.FeatureWeight.FeatureScorer scorer = 
featureWeight.scorer(context);
  if (scorer != null) {
    featureScorers.add(scorer);
  }
}



Modified to a thread pool call. Please help to see if this can lead to 
performance optimization.Thank you very much



List<Future<Feature.FeatureWeight.FeatureScorer> > futures = new 
ArrayList<>(extractedFeatureWeights.length);
for (final Feature.FeatureWeight featureWeight : extractedFeatureWeights) {
  MyCreateFeatureWeightCallable callable = new 
MyCreateFeatureWeightCallable(featureWeight, context);
  RunnableFuture<Feature.FeatureWeight.FeatureScorer> runnableFuture = new 
FutureTask<>(callable);
  ltrThreadMgr.execute(runnableFuture);//releases semaphore when done
  futures.add(runnableFuture);
}
for (final Future<Feature.FeatureWeight.FeatureScorer> future : futures) {
  featureScorers.add(future.get()); // future.get() will block if the job is 
still running
}



public class MyCreateFeatureWeightCallable implements 
Callable<Feature.FeatureWeight.FeatureScorer> {

    private Feature.FeatureWeight featureWeight;
    private LeafReaderContext context;

    public MyCreateFeatureWeightCallable(Feature.FeatureWeight featureWeight, 
LeafReaderContext context) {
        this.featureWeight = featureWeight;
        this.context = context;
    }

    @Override
    public Feature.FeatureWeight.FeatureScorer call() throws Exception {
        return featureWeight.scorer(context);
    }
}




在 2019年6月9日,上午11:14,李世明 <limingni...@live.com<mailto:limingni...@live.com>> 写道:

Hi:
When I use LTR, there are 72 features, 500 models and 200 million data. During 
use, LTR execution was found to be extremely slow, with each query above 5s.
Through the analysis found in LTRScoringQuery ModelWeight scorer method of 
class 72 when creating FeatureScorer feature value in the use of content of the 
slowly, and here is the synchronization of execution.
I tried to change this to multithreaded, which had some effect. The average 
query time was 600ms.
Is it too slow for payload or is there room for optimization here?

thank you

Reply via email to