2 * To change this template, choose Tools | Templates
3 * and open the template in the editor.
6 package dstm2.benchmark;
10 import dstm2.factory.Factory;
11 import TransactionalIO.benchmarks.benchmark;
12 import TransactionalIO.core.TransactionalFile;
13 import dstm2.util.Random;
14 import java.io.IOException;
15 import java.util.Iterator;
16 import java.util.Vector;
17 import java.util.concurrent.locks.ReentrantLock;
18 import java.util.logging.Level;
19 import java.util.logging.Logger;
25 public class Counter extends CustomBenchmark {
27 private static Factory<CountKeeper> factory = Thread.makeFactory(CountKeeper.class);
28 private CountKeeper word1_occurence;
29 private CountKeeper word2_occurence;
30 private CountKeeper word3_occurence;
31 private CountKeeper word4_occurence;
32 private CountKeeper word5_occurence;
33 private CountKeeper word6_occurence;
34 private CountKeeper word7_occurence;
35 private CountKeeper word8_occurence;
36 private CountKeeper word9_occurence;
37 private CountKeeper word10_occurence;
43 // for (int i = 0; i< 10; i++)
46 word1_occurence = factory.create();
47 word1_occurence.setOccurence(0);
49 word2_occurence = factory.create();
50 word2_occurence.setOccurence(0);
52 word3_occurence = factory.create();
53 word3_occurence.setOccurence(0);
55 word4_occurence = factory.create();
56 word4_occurence.setOccurence(0);
58 word5_occurence = factory.create();
59 word5_occurence.setOccurence(0);
61 word6_occurence = factory.create();
62 word6_occurence.setOccurence(0);
64 word7_occurence = factory.create();
65 word7_occurence.setOccurence(0);
67 word8_occurence = factory.create();
68 word8_occurence.setOccurence(0);
70 word9_occurence = factory.create();
71 word9_occurence.setOccurence(0);
73 word10_occurence = factory.create();
74 word10_occurence.setOccurence(0);
78 public void execute(){
79 TransactionalFile f1 = (TransactionalFile)benchmark.m.get("2");
80 byte[] data = new byte[1];
81 char[] holder = new char[10000];
82 char[] word = new char[20];
84 long toseek = Integer.valueOf(Thread.currentThread().getName().substring(7)) * 21169;
88 if (toseek != 0) //////////////// skipt the first word since its been read already
89 while (data[0] != '\n'){
98 boolean completeword = false;
101 while (f1.getFilePointer() < toseek +21169)
109 while ((data[0] != '\n' || completeword)){
112 completeword = false;
113 int tmp = processInput(String.valueOf(word,0,counter-1));
117 word1_occurence.setOccurence(word1_occurence.getOccurence() + 1);
120 word2_occurence.setOccurence(word2_occurence.getOccurence() + 1);
123 word3_occurence.setOccurence(word3_occurence.getOccurence() + 1);
126 word4_occurence.setOccurence(word4_occurence.getOccurence() + 1);
129 word5_occurence.setOccurence(word5_occurence.getOccurence() + 1);
132 word6_occurence.setOccurence(word6_occurence.getOccurence() + 1);
135 word7_occurence.setOccurence(word7_occurence.getOccurence() + 1);
138 word8_occurence.setOccurence(word8_occurence.getOccurence() + 1);
141 word9_occurence.setOccurence(word9_occurence.getOccurence() + 1);
144 word10_occurence.setOccurence(word10_occurence.getOccurence() + 1);
148 //update data structure
149 String tolog = new String();
151 tolog = "-----------------------------------------------------------------";
152 tolog += "Found Word: " + String.valueOf(word,0,counter-1) + "\nAt Offset: ";
153 tolog += f1.getFilePointer() - counter;
156 //byte[] towrite0 = new byte[title.length()];
157 //towrite0 = title.getBytes();
159 tolog += String.valueOf(holder,0,i);
161 tolog += "-----------------------------------------------------------------";
164 byte[] towrite = new byte[tolog.length()];
165 towrite = tolog.getBytes();
166 //towrite = tmpstr.getBytes();
170 // System.out.println("dddddd");
172 ((TransactionalFile) (benchmark.m.get("3"))).write(towrite);
173 //((TransactionalFile) (benchmark.m.get("3"))).write();
175 } catch (IOException ex) {
176 Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
186 //synchronized(benchmark.lock){
187 // if (!(Character.isWhitespace(word[counter])))
188 // System.out.println(String.valueOf(word,0,counter-1));
190 holder[i] = (char)data[0];
197 while(Character.isLetter((char)data[0]))
205 word[counter] = (char)data[0];
209 holder[i] = (char)data[0];
216 protected void execute(String towrite, int indiex_of_object){
217 switch(indiex_of_object){
219 word1_occurence.setOccurence(word1_occurence.getOccurence() + 1);
222 word2_occurence.setOccurence(word2_occurence.getOccurence() + 1);
225 word3_occurence.setOccurence(word3_occurence.getOccurence() + 1);
228 word4_occurence.setOccurence(word4_occurence.getOccurence() + 1);
231 word5_occurence.setOccurence(word5_occurence.getOccurence() + 1);
234 word6_occurence.setOccurence(word6_occurence.getOccurence() + 1);
237 word7_occurence.setOccurence(word7_occurence.getOccurence() + 1);
240 word8_occurence.setOccurence(word8_occurence.getOccurence() + 1);
243 word9_occurence.setOccurence(word9_occurence.getOccurence() + 1);
246 word10_occurence.setOccurence(word10_occurence.getOccurence() + 1);
252 ((TransactionalFile) (benchmark.m.get("3"))).write(towrite.getBytes());
254 } catch (IOException ex) {
255 Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);
262 @atomic public interface CountKeeper{
264 void setOccurence(int value);;
267 private int processInput(String str){
269 Iterator it = benchmark.m2.keySet().iterator();
270 while (it.hasNext()){
271 Integer index = (Integer) it.next();
272 String pattern = (String)benchmark.m2.get(index);
273 if (str.equalsIgnoreCase(pattern)){
280 public void printResults() {
281 for (int i =0; i<10; i++)
284 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word1_occurence.getOccurence());
287 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word2_occurence.getOccurence());
290 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word3_occurence.getOccurence());
293 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word4_occurence.getOccurence());
296 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word5_occurence.getOccurence());
299 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word6_occurence.getOccurence());
302 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word7_occurence.getOccurence());
305 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word8_occurence.getOccurence());
308 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word9_occurence.getOccurence());
311 System.out.println((String)benchmark.m2.get(Integer.valueOf(i)) + " " + word10_occurence.getOccurence());
318 protected void execute(Vector arguments) {
319 String towrite = (String)arguments.get(0);
320 Integer i = (Integer)arguments.get(1);
321 int indiex_of_object = i.intValue();
322 switch(indiex_of_object){
324 word1_occurence.setOccurence(word1_occurence.getOccurence() + 1);
327 word2_occurence.setOccurence(word2_occurence.getOccurence() + 1);
330 word3_occurence.setOccurence(word3_occurence.getOccurence() + 1);
333 word4_occurence.setOccurence(word4_occurence.getOccurence() + 1);
336 word5_occurence.setOccurence(word5_occurence.getOccurence() + 1);
339 word6_occurence.setOccurence(word6_occurence.getOccurence() + 1);
342 word7_occurence.setOccurence(word7_occurence.getOccurence() + 1);
345 word8_occurence.setOccurence(word8_occurence.getOccurence() + 1);
348 word9_occurence.setOccurence(word9_occurence.getOccurence() + 1);
351 word10_occurence.setOccurence(word10_occurence.getOccurence() + 1);
357 System.out.println(Thread.currentThread());
358 ((TransactionalFile) (benchmark.m.get("3"))).write(towrite.getBytes());
360 } catch (IOException ex) {
361 Logger.getLogger(Counter.class.getName()).log(Level.SEVERE, null, ex);