KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > bak > pcj > benchmark > MapBenchmark


1 /*
2  * Primitive Collections for Java.
3  * Copyright (C) 2003 Søren Bak
4  *
5  * This library is free software; you can redistribute it and/or
6  * modify it under the terms of the GNU Lesser General Public
7  * License as published by the Free Software Foundation; either
8  * version 2.1 of the License, or (at your option) any later version.
9  *
10  * This library is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13  * Lesser General Public License for more details.
14  *
15  * You should have received a copy of the GNU Lesser General Public
16  * License along with this library; if not, write to the Free Software
17  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18  */

19 package bak.pcj.benchmark;
20
21 import java.util.Map JavaDoc;
22 import java.util.Iterator JavaDoc;
23
24 /**
25  * This class represents an abstract base for implementing benchmarks
26  * for maps.
27  *
28  * @author Søren Bak
29  * @version 1.0 2003/5/1
30  * @since 1.0
31  */

32 public abstract class MapBenchmark extends Benchmark {
33
34     protected abstract Map JavaDoc create(Integer JavaDoc[] keys, Integer JavaDoc[] values);
35
36     protected Map JavaDoc create() {
37         return create(new Integer JavaDoc[]{}, new Integer JavaDoc[]{});
38     }
39
40     public String JavaDoc getClassId() {
41         Object JavaDoc v = create();
42         String JavaDoc name = v.getClass().getName();
43         return name;
44     }
45
46     public String JavaDoc benchmarkPutExisting(DataSet dataSet) {
47         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
48         Integer JavaDoc[] l = dataSet.getObjects(0);
49         Integer JavaDoc[] k = dataSet.getObjects(1);
50         startTimer();
51         for (int i = 0; i < l.length; i++)
52             c.put(l[i], k[i]);
53         stopTimer();
54         return l.length + " overwriting calls to put() with " + l.length + " mappings";
55     }
56
57     public String JavaDoc benchmarkPutNonExisting(DataSet dataSet) {
58         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
59         Integer JavaDoc[] l = dataSet.getObjects(1);
60         startTimer();
61         for (int i = 0; i < l.length; i++)
62             c.put(l[i], l[i]);
63         stopTimer();
64         return l.length + " non-overwriting calls to put() with " + l.length + " mappings";
65     }
66
67     public String JavaDoc benchmarkGetExisting(DataSet dataSet) {
68         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
69         Integer JavaDoc[] l = dataSet.getObjects(0);
70         startTimer();
71         for (int i = 0; i < l.length; i++)
72             c.get(l[i]);
73         stopTimer();
74         return l.length + " successful calls to get() with " + c.size() + " mappings";
75     }
76
77     public String JavaDoc benchmarkGetNonExisting(DataSet dataSet) {
78         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
79         Integer JavaDoc[] l = dataSet.getObjects(1);
80         startTimer();
81         for (int i = 0; i < l.length; i++)
82             c.get(l[i]);
83         stopTimer();
84         return l.length + " unsuccessful calls to get() with " + c.size() + " mappings";
85     }
86
87     public String JavaDoc benchmarkRemoveExisting(DataSet dataSet) {
88         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
89         Integer JavaDoc[] l = dataSet.getObjects(0);
90         startTimer();
91         for (int i = 0; i < l.length; i++)
92             c.remove(l[i]);
93         stopTimer();
94         return l.length + " successful calls to remove() with " + l.length + " mappings";
95     }
96
97     public String JavaDoc benchmarkRemoveNonExisting(DataSet dataSet) {
98         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
99         Integer JavaDoc[] l = dataSet.getObjects(1);
100         startTimer();
101         for (int i = 0; i < l.length; i++)
102             c.remove(l[i]);
103         stopTimer();
104         return l.length + " unsuccessful calls to remove() with " + l.length + " mappings";
105     }
106
107     public String JavaDoc benchmarkIterator(DataSet dataSet) {
108         Map JavaDoc c = create(dataSet.getObjects(0), dataSet.getObjects(0));
109         startTimer();
110         Iterator JavaDoc it = c.entrySet().iterator();
111         while (it.hasNext()) {
112             it.next();
113             Map.Entry JavaDoc e = (Map.Entry JavaDoc)it.next();
114             e.getKey();
115             e.getValue();
116         }
117         stopTimer();
118         return "Iteration over " + c.size() + " mappings";
119     }
120
121 }
Popular Tags