add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / benchmark / src / java / org / apache / lucene / benchmark / byTask / tasks / RepSumByPrefRoundTask.java
1 package org.apache.lucene.benchmark.byTask.tasks;
2
3 /**
4  * Licensed to the Apache Software Foundation (ASF) under one or more
5  * contributor license agreements.  See the NOTICE file distributed with
6  * this work for additional information regarding copyright ownership.
7  * The ASF licenses this file to You under the Apache License, Version 2.0
8  * (the "License"); you may not use this file except in compliance with
9  * the License.  You may obtain a copy of the License at
10  *
11  *     http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing, software
14  * distributed under the License is distributed on an "AS IS" BASIS,
15  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16  * See the License for the specific language governing permissions and
17  * limitations under the License.
18  */
19
20 import java.util.LinkedHashMap;
21 import java.util.List;
22
23 import org.apache.lucene.benchmark.byTask.PerfRunData;
24 import org.apache.lucene.benchmark.byTask.stats.Report;
25 import org.apache.lucene.benchmark.byTask.stats.TaskStats;
26
27 /**
28  * Report all prefix matching statistics grouped/aggregated by name and round.
29  * <br>Other side effects: None.
30  */
31 public class RepSumByPrefRoundTask extends RepSumByPrefTask {
32
33   public RepSumByPrefRoundTask(PerfRunData runData) {
34     super(runData);
35   }
36
37   @Override
38   public int doLogic() throws Exception {
39     Report rp = reportSumByPrefixRound(getRunData().getPoints().taskStats());
40     
41     System.out.println();
42     System.out.println("------------> Report sum by Prefix ("+prefix+") and Round ("+
43         rp.getSize()+" about "+rp.getReported()+" out of "+rp.getOutOf()+")");
44     System.out.println(rp.getText());
45     System.out.println();
46
47     return 0;
48   }
49
50   protected Report reportSumByPrefixRound(List<TaskStats> taskStats) {
51     // aggregate by task name and by round
52     int reported = 0;
53     LinkedHashMap<String,TaskStats> p2 = new LinkedHashMap<String,TaskStats>();
54     for (final TaskStats stat1 : taskStats) {
55       if (stat1.getElapsed()>=0 && stat1.getTask().getName().startsWith(prefix)) { // only ended tasks with proper name
56         reported++;
57         String name = stat1.getTask().getName();
58         String rname = stat1.getRound()+"."+name; // group by round
59         TaskStats stat2 = p2.get(rname);
60         if (stat2 == null) {
61           try {
62             stat2 = (TaskStats) stat1.clone();
63           } catch (CloneNotSupportedException e) {
64             throw new RuntimeException(e);
65           }
66           p2.put(rname,stat2);
67         } else {
68           stat2.add(stat1);
69         }
70       }
71     }
72     // now generate report from secondary list p2    
73     return genPartialReport(reported, p2, taskStats.size());
74   }
75
76
77 }