add --shared
[pylucene.git] / lucene-java-3.4.0 / lucene / contrib / benchmark / src / java / org / apache / lucene / benchmark / byTask / tasks / RepSumByNameTask.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 statistics aggregated by name.
29  * <br>Other side effects: None.
30  */
31 public class RepSumByNameTask extends ReportTask {
32
33   public RepSumByNameTask(PerfRunData runData) {
34     super(runData);
35   }
36
37   @Override
38   public int doLogic() throws Exception {
39     Report rp = reportSumByName(getRunData().getPoints().taskStats());
40
41     System.out.println();
42     System.out.println("------------> Report Sum By (any) Name ("+
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   /**
51    * Report statistics as a string, aggregate for tasks named the same.
52    * @return the report
53    */
54   protected Report reportSumByName(List<TaskStats> taskStats) {
55     // aggregate by task name
56     int reported = 0;
57     LinkedHashMap<String,TaskStats> p2 = new LinkedHashMap<String,TaskStats>();
58     for (final TaskStats stat1: taskStats) {
59       if (stat1.getElapsed()>=0) { // consider only tasks that ended
60         reported++;
61         String name = stat1.getTask().getName();
62         TaskStats stat2 = p2.get(name);
63         if (stat2 == null) {
64           try {
65             stat2 = (TaskStats) stat1.clone();
66           } catch (CloneNotSupportedException e) {
67             throw new RuntimeException(e);
68           }
69           p2.put(name,stat2);
70         } else {
71           stat2.add(stat1);
72         }
73       }
74     }
75     // now generate report from secondary list p2    
76     return genPartialReport(reported, p2, taskStats.size());
77   }
78
79
80 }