1 4 package com.tctest.performance.timedtask; 5 6 import com.tc.object.config.ConfigVisitor; 7 import com.tc.object.config.DSOApplicationConfig; 8 import com.tc.object.config.DSOClientConfigHelper; 9 import com.tc.simulator.app.ApplicationConfig; 10 import com.tc.simulator.listener.ListenerProvider; 11 import com.tctest.runner.AbstractTransparentApp; 12 13 import java.util.ArrayList ; 14 import java.util.List ; 15 16 public final class TimedObjectCreationTestApp extends AbstractTransparentApp { 17 18 private static final int VOLUME = 100000; 19 private static final double NANOSEC = 1000000000D; 20 private final List rootList = new ArrayList (); 21 22 public TimedObjectCreationTestApp(String appId, ApplicationConfig cfg, ListenerProvider listenerProvider) { 23 super(appId, cfg, listenerProvider); 24 } 25 26 public static void visitL1DSOConfig(ConfigVisitor visitor, DSOClientConfigHelper config) { 27 String className = TimedObjectCreationTestApp.class.getName(); 28 config.addRoot("rootList", className + ".rootList"); 29 String methodExpression = "* " + className + "*.*(..)"; 30 config.addWriteAutolock(methodExpression); 31 } 32 33 public static void visitDSOApplicationConfig(ConfigVisitor visitor, DSOApplicationConfig config) { 34 String className = TimedObjectCreationTestApp.class.getName(); 35 config.addRoot("rootList", className + ".rootList"); 36 String methodExpression = "* " + className + "*.*(..)"; 37 config.addWriteAutolock(methodExpression); 38 } 39 40 public void run() { 41 long start = System.nanoTime(); 42 for (int i = 0; i < VOLUME; i++) { 43 add(new Object ()); 44 } 45 long end = System.nanoTime(); 46 47 printResult(start, end); 48 } 49 50 private void add(Object obj) { 51 synchronized (rootList) { 52 rootList.add(obj); 53 } 54 } 55 56 private void printResult(long start, long end) { 57 double time = (end - start); 58 long result = Math.round(VOLUME / (time / NANOSEC)); 59 System.out.println("**%% TERRACOTTA TEST STATISTICS %%**: value=" + result + " obj/sec"); 60 } 61 } 62 | Popular Tags |