001: /*
002: Copyright 2004 Philip Jacob <phil@whirlycott.com>
003: Seth Fitzsimmons <seth@note.amherst.edu>
004:
005: Licensed under the Apache License, Version 2.0 (the "License");
006: you may not use this file except in compliance with the License.
007: You may obtain a copy of the License at
008:
009: http://www.apache.org/licenses/LICENSE-2.0
010:
011: Unless required by applicable law or agreed to in writing, software
012: distributed under the License is distributed on an "AS IS" BASIS,
013: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014: See the License for the specific language governing permissions and
015: limitations under the License.
016: */
017:
018: /*
019: * Created on Jun 6, 2004 by pjacob
020: *
021: */
022: package com.whirlycott.cache.test;
023:
024: import org.apache.commons.logging.Log;
025: import org.apache.commons.logging.LogFactory;
026:
027: import com.opensymphony.oscache.base.Cache;
028: import com.opensymphony.oscache.general.GeneralCacheAdministrator;
029:
030: /**
031: * @author pjacob
032: *
033: */
034: public class BenchmarkOscache implements Runnable {
035: private static Log log = LogFactory.getLog(BenchmarkOscache.class);
036:
037: private static Cache c = new GeneralCacheAdministrator().getCache();
038:
039: public static void main(String[] args) throws Exception {
040: log.debug("Single threaded tests...");
041: BenchmarkOscache oscacheTest = new BenchmarkOscache();
042: oscacheTest.doPutTest();
043: oscacheTest.doGetTest();
044:
045: Thread[] t = new Thread[Constants.THREAD_COUNT];
046: long beginGets = System.currentTimeMillis();
047: for (int i = 0; i < Constants.THREAD_COUNT; i++) {
048: log.debug("Starting thread " + i);
049: t[i] = new Thread(new BenchmarkOscache());
050: t[i].start();
051: }
052:
053: for (int i = 0; i < Constants.THREAD_COUNT; i++)
054: t[i].join();
055:
056: long endGets = System.currentTimeMillis();
057:
058: log.debug("Total mx-thread time w/ concurrency level "
059: + Constants.THREAD_COUNT + " was "
060: + (endGets - beginGets));
061:
062: new GeneralCacheAdministrator().destroy();
063: }
064:
065: /**
066: *
067: */
068: private void doGetTest() throws Exception {
069: //BEGIN GETS
070: long startGet = System.currentTimeMillis();
071: for (int loop = 0; loop < Constants.RETRIEVE_COUNT; loop++) {
072: //log.debug("Looping: " + loop );
073: for (int i = 0; i < Constants.STORE_COUNT; i++) {
074: Object o = c.getFromCache(new Integer(i).toString());
075: String s = (String) o;
076: /* if (!s.equals((String)o)) {
077: log.error(s + " doesn't equal");
078: throw new Exception("Mismatch");
079: }*/
080: }
081: }
082: long endGet = System.currentTimeMillis();
083: log.debug("Total GET time was: " + (endGet - startGet));
084: //END GETS
085: }
086:
087: private void doPutTest() throws Exception {
088:
089: //BEGIN PUTS
090: long start = System.currentTimeMillis();
091: for (int i = 0; i < Constants.STORE_COUNT; i++) {
092: c.putInCache(new Integer(i).toString(), "value" + i);
093: }
094: long end = System.currentTimeMillis();
095: log.debug("Total PUT time was: " + (end - start));
096: //END PUTS
097:
098: //--------------------------------------------
099:
100: log.debug("Cache size is: " + null);
101: }
102:
103: /* (non-Javadoc)
104: * @see java.lang.Runnable#run()
105: */
106: public void run() {
107: try {
108: doGetTest();
109: } catch (Exception e) {
110: e.printStackTrace();
111: }
112:
113: }
114:
115: }
|