The key for release to market has been expired. Needs new key and package name.
[0xbench:0xbench.git] / src / org / zeroxlab / benchmark / CaseScimark2.java
1 /*
2  * Copyright (C) 2010 0xlab - http://0xlab.org/
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *     http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16
17 package org.zeroxlab.zeroxbenchmark;
18
19 import android.util.Log;
20
21 import android.os.SystemClock;
22
23 import android.app.Activity;
24 import android.content.Context;
25 import android.content.BroadcastReceiver;
26 import android.content.Intent;
27 import android.os.Bundle;
28
29 import java.util.ArrayList;
30
31 import org.zeroxlab.zeroxbenchmark.TesterScimark2;
32
33 public class CaseScimark2 extends Case {
34
35     public static String LIN_RESULT = "LIN_RESULT";
36     protected Bundle mInfo[];
37
38     public static int Repeat = 1;
39     public static int Round  = 1;
40
41     CaseScimark2() {
42         super("CaseScimark2", "org.zeroxlab.zeroxbenchmark.TesterScimark2", Repeat, Round);
43
44         mType = "mflops";
45         String [] _tmp = {
46             "mflops",
47             "numeric",
48             "scientific",
49         };
50         mTags = _tmp;
51
52         generateInfo();
53     }
54
55     public String getTitle() {
56         return "Scimark2";
57     }
58
59     public String getDescription() {
60         return "SciMark 2.0 is a Java benchmark for scientific and numerical computing. It measures several computational kernels and reports a composite score in approximate Mflops.";
61     }
62
63     private void generateInfo() {
64         mInfo = new Bundle[Repeat];
65         for (int i = 0; i < mInfo.length; i++) {
66             mInfo[i] = new Bundle();
67         }
68     }
69
70     @Override
71     public void clear() {
72         super.clear();
73         generateInfo();
74     }
75
76     @Override
77     public void reset() {
78         super.reset();
79         generateInfo();
80     }
81
82     @Override
83     public String getResultOutput() {
84         if (!couldFetchReport()) {
85             return "No benchmark report";
86         }
87
88         String result = "\n";
89         for (int i = 0; i < mInfo.length; i++) {
90             result += TesterScimark2.bundleToString(mInfo[i]);
91             result += "\n";
92         }
93         return result;
94     }
95
96     /*
97      *  Get Average Benchmark
98      */
99     public double getBenchmark(Scenario s) {
100         double total = 0;
101         int length = mInfo.length;
102         String name = s.mName.replaceFirst("Scimark2:", "");
103         for (int i = 0; i < length; i++) {
104             total += mInfo[i].getDouble(name, 0.0);
105         }
106         return total/length;
107     }
108
109     @Override
110     public ArrayList<Scenario> getScenarios () {
111         ArrayList<Scenario> scenarios = new ArrayList<Scenario>();
112
113         ArrayList<String> subBenchmarks = new ArrayList<String>();
114         subBenchmarks.add(TesterScimark2.COMPOSITE    );
115         subBenchmarks.add(TesterScimark2.FFT          );
116         subBenchmarks.add(TesterScimark2.SOR          );
117         subBenchmarks.add(TesterScimark2.MONTECARLO   );
118         subBenchmarks.add(TesterScimark2.SPARSEMATMULT);
119         subBenchmarks.add(TesterScimark2.LU           );
120
121         for (int i = 0; i < subBenchmarks.size(); i++) {
122             String benchName = subBenchmarks.get(i);
123             Scenario s = new Scenario(getTitle()+":"+benchName, mType, mTags);
124
125             for (int j = 0; j < mInfo.length; j++) {
126                 double[] _tmp = mInfo[j].getDoubleArray(benchName + "array");
127                 for (int k = 0; k < _tmp.length; k++)
128                     s.mResults.add(_tmp[k]);
129             }
130
131             scenarios.add(s);
132         }
133
134         return scenarios;
135     }
136
137     @Override
138     protected boolean saveResult(Intent intent, int index) {
139         Bundle info = intent.getBundleExtra(LIN_RESULT);
140         if (info == null) {
141             Log.i(TAG, "Weird! cannot find Scimark2Info");
142             return false;
143         } else {
144             mInfo[index] = info;
145         }
146
147         return true;
148     }
149 }