You are viewing a plain text version of this content. The canonical link for it is here.
Posted to jcs-users@jakarta.apache.org by "Lane, Brad" <Br...@pearson.com> on 2006/02/16 14:15:32 UTC

RE: Initial performance test results: JCS is almost twice as fast as EHCache at gets and puts

I ran similar tests a couple months ago and came up with the exact opposite
result. I also ran tests using disk cache and EHCache was significantly
faster. 

-----Original Message-----
From: Alistair Forbes [mailto:forbes.al@googlemail.com] 
Sent: Thursday, February 16, 2006 2:11 AM
To: JCS Users List
Subject: Re: Initial performance test results: JCS is almost twice as fast
as EHCache at gets and puts

That is good news. Just for interest, which JVM version are you using?

On 2/16/06, Aaron Smuts <as...@yahoo.com> wrote:
>
> I just built both EHCache and JCS from head, configured both similarly 
> and ran multiple put / get rounds of 50,000.  JCS, using the default 
> LRU Memory Cache, was nearly twice as fast as EHCache in multiple 
> trials for both puts and gets.  I have the log levels for both set at 
> info.  I would like to verify my results, since they completely 
> contradict the information on the EHCache site.  From what I can tell 
> so far, JCS is significantly faster than EHCache.
>
> Since, neither will be a relevant bottleneck, it may be beside the 
> point. . . .  I will run more tests to confirm.
>
> Here is the data:
>
> JCS       put time for 50000 = 651; millis per =
> 0.01302
> JCS       get time for 50000 = 160; millis per =
> 0.0032
> EHCache   put time for 50000 = 481; millis per =
> 0.00962
> EHCache   get time for 50000 = 110; millis per =
> 0.0022
>
>
> JCS       put time for 50000 = 240; millis per =
> 0.0048
> JCS       get time for 50000 = 90; millis per = 0.0018
> EHCache   put time for 50000 = 491; millis per =
> 0.00982
> EHCache   get time for 50000 = 120; millis per =
> 0.0024
>
>
> JCS       put time for 50000 = 241; millis per =
> 0.00482
> JCS       get time for 50000 = 80; millis per = 0.0016
> EHCache   put time for 50000 = 551; millis per =
> 0.01102
> EHCache   get time for 50000 = 110; millis per =
> 0.0022
>
>
> JCS       put time for 50000 = 240; millis per =
> 0.0048
> JCS       get time for 50000 = 90; millis per = 0.0018
> EHCache   put time for 50000 = 481; millis per =
> 0.00962
> EHCache   get time for 50000 = 130; millis per =
> 0.0026
>
>
> JCS       put time for 50000 = 230; millis per =
> 0.0046
> JCS       get time for 50000 = 181; millis per =
> 0.00362
> EHCache   put time for 50000 = 520; millis per =
> 0.0104
> EHCache   get time for 50000 = 101; millis per =
> 0.00202
>
>
> JCS       put time for 50000 = 220; millis per =
> 0.0044
> JCS       get time for 50000 = 90; millis per = 0.0018
> EHCache   put time for 50000 = 641; millis per =
> 0.01282
> EHCache   get time for 50000 = 110; millis per =
> 0.0022
>
>
> JCS       put time for 50000 = 250; millis per =
> 0.0050
> JCS       get time for 50000 = 121; millis per =
> 0.00242
> EHCache   put time for 50000 = 590; millis per =
> 0.0118
> EHCache   get time for 50000 = 101; millis per =
> 0.00202
>
>
> JCS       put time for 50000 = 260; millis per =
> 0.0052
> JCS       get time for 50000 = 100; millis per =
> 0.0020
> EHCache   put time for 50000 = 581; millis per =
> 0.01162
> EHCache   get time for 50000 = 100; millis per =
> 0.0020
>
>
> JCS       put time for 50000 = 290; millis per =
> 0.0058
> JCS       get time for 50000 = 121; millis per =
> 0.00242
> EHCache   put time for 50000 = 570; millis per =
> 0.0114
> EHCache   get time for 50000 = 121; millis per =
> 0.00242
>
>
> JCS       put time for 50000 = 210; millis per =
> 0.0042
> JCS       get time for 50000 = 120; millis per =
> 0.0024
> EHCache   put time for 50000 = 561; millis per =
> 0.01122
> EHCache   get time for 50000 = 130; millis per =
> 0.0026
>
>
> JCS       put time for 50000 = 250; millis per =
> 0.0050
> JCS       get time for 50000 = 151; millis per =
> 0.00302
> EHCache   put time for 50000 = 560; millis per =
> 0.0112
> EHCache   get time for 50000 = 111; millis per =
> 0.00222
>
>
> JCS       put time for 50000 = 250; millis per =
> 0.0050
> JCS       get time for 50000 = 100; millis per =
> 0.0020
> EHCache   put time for 50000 = 711; millis per =
> 0.01422
> EHCache   get time for 50000 = 100; millis per =
> 0.0020
>
>
> JCS       put time for 50000 = 251; millis per =
> 0.00502
> JCS       get time for 50000 = 90; millis per = 0.0018
> EHCache   put time for 50000 = 511; millis per =
> 0.01022
> EHCache   get time for 50000 = 90; millis per = 0.0018
>
>
> JCS       put time for 50000 = 220; millis per =
> 0.0044
> JCS       get time for 50000 = 100; millis per =
> 0.0020
> EHCache   put time for 50000 = 491; millis per =
> 0.00982
> EHCache   get time for 50000 = 90; millis per = 0.0018
>
>
> JCS       put time for 50000 = 230; millis per =
> 0.0046
> JCS       get time for 50000 = 80; millis per = 0.0016
> EHCache   put time for 50000 = 201; millis per =
> 0.00402
> EHCache   get time for 50000 = 390; millis per =
> 0.0078
>
>
> JCS       put time for 50000 = 201; millis per =
> 0.00402
> JCS       get time for 50000 = 120; millis per =
> 0.0024
> EHCache   put time for 50000 = 180; millis per =
> 0.0036
> EHCache   get time for 50000 = 411; millis per =
> 0.00822
>
>
> JCS       put time for 50000 = 210; millis per =
> 0.0042
> JCS       get time for 50000 = 100; millis per =
> 0.0020
> EHCache   put time for 50000 = 210; millis per =
> 0.0042
> EHCache   get time for 50000 = 381; millis per =
> 0.00762
>
>
> JCS       put time for 50000 = 240; millis per =
> 0.0048
> JCS       get time for 50000 = 90; millis per = 0.0018
> EHCache   put time for 50000 = 211; millis per =
> 0.00422
> EHCache   get time for 50000 = 410; millis per =
> 0.0082
>
>
> JCS       put time for 50000 = 221; millis per =
> 0.00442
> JCS       get time for 50000 = 80; millis per = 0.0016
> EHCache   put time for 50000 = 210; millis per =
> 0.0042
> EHCache   get time for 50000 = 411; millis per =
> 0.00822
>
>
> JCS       put time for 50000 = 220; millis per =
> 0.0044
> JCS       get time for 50000 = 80; millis per = 0.0016
> EHCache   put time for 50000 = 190; millis per =
> 0.0038
> EHCache   get time for 50000 = 411; millis per =
> 0.00822
>
>
> Finished 20 loops of 50000 gets and puts
>
>
> Put average for JCS        = 256
> Put average for EHCache   = 447
> JCS       puts took 0.57270694 times the EHCache  ,
> the goal is <1.0x
>
>
> Get average for  JCS        = 107
> Get average for EHCache   = 196
> JCS       gets took 0.54591835 times the EHCache  ,
> the goal is <1.0x
>
>
> Here is the test class:
>
>
>
> package org.apache.jcs;
>
> import junit.framework.TestCase;
> import net.sf.ehcache.Cache;
> import net.sf.ehcache.CacheManager;
> import net.sf.ehcache.Element;
>
> import org.apache.commons.logging.Log; import 
> org.apache.commons.logging.LogFactory;
> import org.apache.jcs.engine.CompositeCacheAttributes;
> import
> org.apache.jcs.engine.behavior.ICompositeCacheAttributes;
> import org.apache.jcs.utils.struct.LRUMap;
>
> /**
> * Compare JCS vs ehcache performance.
> *
> * @author Aaron Smuts
> *
> */
> public class JCSvsEHCachePerformanceTest
>     extends TestCase
> {
>
>     float ratioPut = 0;
>
>     float ratioGet = 0;
>
>     // the jcs to competitor
>     float target = 1.0f;
>
>     int loops = 20;
>
>     int tries = 50000;
>
>     /**
>      * Compare performance between JCS and EHCache.
> Fail if JCS is not as fast.
>      * Print the ratio.
>      *
>      * @throws Exception
>      *
>      */
>     public void testJCSvsEHCache()
>         throws Exception
>     {
>
>         Log log = LogFactory.getLog( LRUMap.class );
>         if ( log.isDebugEnabled() )
>         {
>             System.out.println( "The log level must be at info or 
> above for the a performance test." );
>             return;
>         }
>
>         doWork();
>
>         assertTrue( this.ratioPut < target );
>         assertTrue( this.ratioGet < target );
>
>     }
>
>     /**
>      * This runs a series of gets and puts for both JCS and EHCache. 
> The test
>      * will fail if JCS is not faster.
>      *
>      * @throws Exception
>      *
>      */
>     public void doWork()
>         throws Exception
>     {
>
>         int maxSize = 1000000;
>
>         // create the two caches.
>         CacheManager ehMgr =
> CacheManager.getInstance();
>         // Create an ehcache with a max size of maxSize, no swap, with 
> items
>         // that can expire, with maximum idle time to live of 500 
> seconds, and
>         // maximum idel time of 500 seconds.
>         Cache eh = new Cache( "testJCSvsEHCache", maxSize, false, 
> false, 500, 500 );
>         ehMgr.addCache( eh );
>
>         // Create a similarly configured JCS that uses the LRU memory 
> cache.
>         // maxSize elements that are not eternal. No disk cache is 
> configured.
>         ICompositeCacheAttributes cattr = new 
> CompositeCacheAttributes();
>         cattr.setMaxObjects( maxSize );
>         JCS jcs = JCS.getInstance( "testJCSvsEHCache"
> );
>
>         // run settings
>         long start = 0;
>         long end = 0;
>         long time = 0;
>         float tPer = 0;
>
>         long putTotalJCS = 0;
>         long getTotalJCS = 0;
>         long putTotalEHCache = 0;
>         long getTotalEHCache = 0;
>
>         String jcsDisplayName = "JCS";
>         String ehCacheDisplayName = "";
>
>         try
>         {
>             for ( int j = 0; j < loops; j++ )
>             {
>
>                 jcsDisplayName = "JCS      ";
>                 start = System.currentTimeMillis();
>                 for ( int i = 0; i < tries; i++ )
>                 {
>                     jcs.put( "key:" + i, "data" + i );
>                 }
>                 end = System.currentTimeMillis();
>                 time = end - start;
>                 putTotalJCS += time;
>                 tPer = Float.intBitsToFloat( (int) time ) / 
> Float.intBitsToFloat( tries );
>                 System.out
>                     .println( jcsDisplayName + " put time for " + 
> tries + " = " + time + "; millis per = "
> + tPer );
>
>                 start = System.currentTimeMillis();
>                 for ( int i = 0; i < tries; i++ )
>                 {
>                     jcs.get( "key:" + i );
>                 }
>                 end = System.currentTimeMillis();
>                 time = end - start;
>                 getTotalJCS += time;
>                 tPer = Float.intBitsToFloat( (int) time ) / 
> Float.intBitsToFloat( tries );
>                 System.out
>                     .println( jcsDisplayName + " get time for " + 
> tries + " = " + time + "; millis per = "
> + tPer );
>
>                 //
> /////////////////////////////////////////////////////////////
>                 ehCacheDisplayName = "EHCache  ";
>
>                 start = System.currentTimeMillis();
>                 for ( int i = 0; i < tries; i++ )
>                 {
>                     Element ehElm = new Element( "key:" + i, "data" + 
> i );
>
>                     eh.put( ehElm );
>                 }
>                 end = System.currentTimeMillis();
>                 time = end - start;
>                 putTotalEHCache += time;
>                 tPer = Float.intBitsToFloat( (int) time ) / 
> Float.intBitsToFloat( tries );
>                 System.out.println( ehCacheDisplayName
> + " put time for " + tries + " = " + time + "; millis
> per = "
>                     + tPer );
>
>                 start = System.currentTimeMillis();
>                 for ( int i = 0; i < tries; i++ )
>                 {
>                     eh.get( "key:" + i );
>                 }
>                 end = System.currentTimeMillis();
>                 time = end - start;
>                 getTotalEHCache += time;
>                 tPer = Float.intBitsToFloat( (int) time ) / 
> Float.intBitsToFloat( tries );
>                 System.out.println( ehCacheDisplayName
> + " get time for " + tries + " = " + time + "; millis
> per = "
>                     + tPer );
>
>                 System.out.println( "\n" );
>             }
>
>         }
>         catch ( Exception e )
>         {
>             e.printStackTrace( System.out );
>             System.out.println( e );
>         }
>
>         long putAvJCS = putTotalJCS / loops;
>         long getAvJCS = getTotalJCS / loops;
>         long putAvHashtable = putTotalEHCache / loops;
>         long getAvHashtable = getTotalEHCache / loops;
>
>         System.out.println( "Finished " + loops + "
> loops of " + tries + " gets and puts" );
>
>         System.out.println( "\n" );
>         System.out.println( "Put average for " + jcsDisplayName + "  = 
> " + putAvJCS );
>         System.out.println( "Put average for " + ehCacheDisplayName + 
> " = " + putAvHashtable );
>         ratioPut = Float.intBitsToFloat( (int) putAvJCS ) / 
> Float.intBitsToFloat( (int) putAvHashtable );
>         System.out.println( jcsDisplayName + " puts took " + ratioPut 
> + " times the " + ehCacheDisplayName
>             + ", the goal is <" + target + "x" );
>
>         System.out.println( "\n" );
>         System.out.println( "Get average for  " + jcsDisplayName + "  
> = " + getAvJCS );
>         System.out.println( "Get average for " + ehCacheDisplayName + 
> " = " + getAvHashtable );
>         ratioGet = Float.intBitsToFloat( (int) getAvJCS ) / 
> Float.intBitsToFloat( (int) getAvHashtable );
>         System.out.println( jcsDisplayName + " gets took " + ratioGet 
> + " times the " + ehCacheDisplayName
>             + ", the goal is <" + target + "x" );
>
>     }
>
> }
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
> For additional commands, e-mail: jcs-users-help@jakarta.apache.org
>
>

**************************************************************************** 
This email may contain confidential material. 
If you were not an intended recipient, 
Please notify the sender and delete all copies. 
We may monitor email to and from our network. 
****************************************************************************

---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org


RE: JCS is almost twice as fast as EHCache at gets and puts

Posted by mp...@lineone.net.
Cool.
So is there some way to slow JCS down and actually make it work reliably
like EHCache?

Perhaps spending some time writing automated tests for various remote/lateral
cache configurations in "put" mode might be a good use of time.

>-- Original Message --
>Reply-To: "JCS Users List" <jc...@jakarta.apache.org>
>Date: Thu, 16 Feb 2006 16:15:45 -0800 (PST)
>From: Aaron Smuts <as...@yahoo.com>
>Subject: JCS is almost twice as fast  as EHCache at gets and puts
>To: JCS Users List <jc...@jakarta.apache.org>
>
>
>http://jakarta.apache.org/jcs/JCSvsEHCache.html
>
>It is linked to in the faq.
>
>I put some of the test data here.  I will be adding
>more information to this page, such as the relative
>sophistication of the JCS disk cache in comparison to
>eh.  
>
>Aaron
>
>---------------------------------------------------------------------
>To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
>For additional commands, e-mail: jcs-users-help@jakarta.apache.org
>
P

___________________________________________________________

Tiscali Broadband from 14.99 with free setup!
http://www.tiscali.co.uk/products/broadband/



---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org


JCS is almost twice as fast as EHCache at gets and puts

Posted by Aaron Smuts <as...@yahoo.com>.
http://jakarta.apache.org/jcs/JCSvsEHCache.html

It is linked to in the faq.

I put some of the test data here.  I will be adding
more information to this page, such as the relative
sophistication of the JCS disk cache in comparison to
eh.  

Aaron

---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org


RE: Initial performance test results: JCS is almost twice as fast as EHCache at gets and puts

Posted by Aaron Smuts <as...@yahoo.com>.
It is very difficult to compare the ehcache disk store
and the JCS Indexed Disk Cache.

The JCS version is much more sophisticated.  

JCS puts items into a queue called purgatory.  While
they are in this queue, they are still accessible. 
This queue gets worked when items are in it.  The
number of threads used in the system as a whole for
disk caches is configurable using the thread pool
configuration options in JCS.  I could have 1000
regions and only use 3 threads to work the disk
queues.  From what I can tell EH will use 1 thread per
region.  This is worse than the JCS default, which
uses a queue that kills its threads when they are not
used. . . . and much worse than using JCS with a
thread pool.

The size of JCS purgatory is configurable, so you can
avoid catastrophe if something goes wrong with the
queue worker.  EH doesn't have any such safety.  

JCS limits the number of keys that can be kept for the
disk cache.  EH cannot do this.

The ehcache disk version is very simple.  It puts an
unlimited number of items in a temporary store.  You
can easily fill this up and run out of memory.  You
can put items into JCS prugatory faster than they can
be gc's but it is much more difficult.  The EH store
is then flushed to disk every 200ms.  While EH is
flushing the entire disk cache blocks!  JCS disk cache
is based on a continuous spooling model, not a stop
the world model like EH.  In most cases the EH model
will work out, but not if you put a lot of big items
on disk at once.

The EH disk store also seems to just keep growing. 
After several tests, the size of the data file was 10
times that of JCS and EH was taking 10 times as long. 


You can saturate the EH version much more quickly,
since it will hold as many items as you can put in in
200 ms.

I tried with 100k and JCS could handle it, but EH died
with an out of memory exception.

2006-02-16 13:47:04,166 [main] WARN 
net.sf.ehcache.config.ConfigurationFactory - No
configuration found. Configuring ehcache from
ehcache-failsafe.xml  found in the classpath:
jar:file:/C:/Documents%20and%20Settings/sg0894751/.maven/repository/ehcache/jars/ehcache-1.2beta4.jar!/ehcache-failsafe.xml
2006-02-16 13:47:04,446 [main] WARN 
org.apache.jcs.auxiliary.disk.indexed.IndexedDisk -
Resetting data file
JCS       put time for 100000 = 5084; millis per =
0.05084
JCS       get time for 100000 = 47368; millis per =
0.47368
Starting run for EHCache  
java.lang.OutOfMemoryError
java.lang.OutOfMemoryError


EH cache developed its disk store in response to a bug
in the JCS version.  This bug was fixed a few years
ago . . .  The nice thing about JCS is that it is
completely pluggable.  It would take about 30 minutes
to plug a differnt disk cache implementation into JCS
if you so pleased . . . .  

Aaron



--- "Lane, Brad" <Br...@pearson.com> wrote:

> I ran similar tests a couple months ago and came up
> with the exact opposite
> result. I also ran tests using disk cache and
> EHCache was significantly
> faster. 
> 
> -----Original Message-----
> From: Alistair Forbes
> [mailto:forbes.al@googlemail.com] 
> Sent: Thursday, February 16, 2006 2:11 AM
> To: JCS Users List
> Subject: Re: Initial performance test results: JCS
> is almost twice as fast
> as EHCache at gets and puts
> 
> That is good news. Just for interest, which JVM
> version are you using?
> 
> On 2/16/06, Aaron Smuts <as...@yahoo.com> wrote:
> >
> > I just built both EHCache and JCS from head,
> configured both similarly 
> > and ran multiple put / get rounds of 50,000.  JCS,
> using the default 
> > LRU Memory Cache, was nearly twice as fast as
> EHCache in multiple 
> > trials for both puts and gets.  I have the log
> levels for both set at 
> > info.  I would like to verify my results, since
> they completely 
> > contradict the information on the EHCache site. 
> From what I can tell 
> > so far, JCS is significantly faster than EHCache.
> >
> > Since, neither will be a relevant bottleneck, it
> may be beside the 
> > point. . . .  I will run more tests to confirm.
> >
> > Here is the data:
> >
> > JCS       put time for 50000 = 651; millis per =
> > 0.01302
> > JCS       get time for 50000 = 160; millis per =
> > 0.0032
> > EHCache   put time for 50000 = 481; millis per =
> > 0.00962
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 240; millis per =
> > 0.0048
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 491; millis per =
> > 0.00982
> > EHCache   get time for 50000 = 120; millis per =
> > 0.0024
> >
> >
> > JCS       put time for 50000 = 241; millis per =
> > 0.00482
> > JCS       get time for 50000 = 80; millis per =
> 0.0016
> > EHCache   put time for 50000 = 551; millis per =
> > 0.01102
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 240; millis per =
> > 0.0048
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 481; millis per =
> > 0.00962
> > EHCache   get time for 50000 = 130; millis per =
> > 0.0026
> >
> >
> > JCS       put time for 50000 = 230; millis per =
> > 0.0046
> > JCS       get time for 50000 = 181; millis per =
> > 0.00362
> > EHCache   put time for 50000 = 520; millis per =
> > 0.0104
> > EHCache   get time for 50000 = 101; millis per =
> > 0.00202
> >
> >
> > JCS       put time for 50000 = 220; millis per =
> > 0.0044
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 641; millis per =
> > 0.01282
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 121; millis per =
> > 0.00242
> > EHCache   put time for 50000 = 590; millis per =
> > 0.0118
> > EHCache   get time for 50000 = 101; millis per =
> > 0.00202
> >
> >
> > JCS       put time for 50000 = 260; millis per =
> > 0.0052
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 581; millis per =
> > 0.01162
> > EHCache   get time for 50000 = 100; millis per =
> > 0.0020
> >
> >
> > JCS       put time for 50000 = 290; millis per =
> > 0.0058
> > JCS       get time for 50000 = 121; millis per =
> > 0.00242
> > EHCache   put time for 50000 = 570; millis per =
> > 0.0114
> > EHCache   get time for 50000 = 121; millis per =
> > 0.00242
> >
> >
> > JCS       put time for 50000 = 210; millis per =
> > 0.0042
> > JCS       get time for 50000 = 120; millis per =
> > 0.0024
> > EHCache   put time for 50000 = 561; millis per =
> > 0.01122
> > EHCache   get time for 50000 = 130; millis per =
> > 0.0026
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 151; millis per =
> > 0.00302
> > EHCache   put time for 50000 = 560; millis per =
> > 0.0112
> > EHCache   get time for 50000 = 111; millis per =
> > 0.00222
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 711; millis per =
> > 0.01422
> > EHCache   get time for 50000 = 100; millis per =
> > 0.0020
> >
> >
> > JCS       put time for 50000 = 251; millis per =
> > 0.00502
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 511; millis per =
> > 0.01022
> > EHCache   get time for 50000 = 90; millis per =
> 0.0018
> >
> >
> > JCS       put time for 50000 = 220; millis per =
> > 0.0044
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 491; millis per =
> > 0.00982
> > EHCache   get time for 50000 = 90; millis per =
> 0.0018
> >
> >
> > JCS       put time for 50000 = 230; millis per =
> > 0.0046
> > JCS       get time for 50000 = 80; millis per =
> 0.0016
> > EHCache   put time for 50000 = 201; millis per =
> > 0.00402
> > EHCache   get time for 50000 = 390; millis per =
> > 0.0078
> >
> >
> > JCS       put time for 50000 = 201; millis per =
> > 0.00402
> > JCS       get time for 50000 = 120; millis per =
> > 0.0024
> > EHCache   put time for 50000 = 180; millis per =
> > 0.0036
> > EHCache   get time for 50000 = 411; millis per =
> > 0.00822
> >
> >
> > JCS       put time for 50000 = 210; millis per =
> 
=== message truncated ===


---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org


RE: Initial performance test results: JCS is almost twice as fast as EHCache at gets and puts

Posted by Aaron Smuts <as...@yahoo.com>.
Let's see you test code.  I'm using the 1.2.7.0
version of JCS--what is in head right now.  I'll build
it in temp builds later.

I've been runing tests for hours and I get the same
results.  I'm not bringing the disk cache into this
yet.  This is a memory only cache test.  

Additional testing shows that when the size limit it
reached, JCS and EHCache perform similarly for puts
and	gets. Although JCS gets are significantly faster
when the items are present, they are almost exactly
the same when the items are not in the cache. My tests
revealed a less than 1% difference.

Aaron

--- "Lane, Brad" <Br...@pearson.com> wrote:

> I ran similar tests a couple months ago and came up
> with the exact opposite
> result. I also ran tests using disk cache and
> EHCache was significantly
> faster. 
> 
> -----Original Message-----
> From: Alistair Forbes
> [mailto:forbes.al@googlemail.com] 
> Sent: Thursday, February 16, 2006 2:11 AM
> To: JCS Users List
> Subject: Re: Initial performance test results: JCS
> is almost twice as fast
> as EHCache at gets and puts
> 
> That is good news. Just for interest, which JVM
> version are you using?
> 
> On 2/16/06, Aaron Smuts <as...@yahoo.com> wrote:
> >
> > I just built both EHCache and JCS from head,
> configured both similarly 
> > and ran multiple put / get rounds of 50,000.  JCS,
> using the default 
> > LRU Memory Cache, was nearly twice as fast as
> EHCache in multiple 
> > trials for both puts and gets.  I have the log
> levels for both set at 
> > info.  I would like to verify my results, since
> they completely 
> > contradict the information on the EHCache site. 
> From what I can tell 
> > so far, JCS is significantly faster than EHCache.
> >
> > Since, neither will be a relevant bottleneck, it
> may be beside the 
> > point. . . .  I will run more tests to confirm.
> >
> > Here is the data:
> >
> > JCS       put time for 50000 = 651; millis per =
> > 0.01302
> > JCS       get time for 50000 = 160; millis per =
> > 0.0032
> > EHCache   put time for 50000 = 481; millis per =
> > 0.00962
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 240; millis per =
> > 0.0048
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 491; millis per =
> > 0.00982
> > EHCache   get time for 50000 = 120; millis per =
> > 0.0024
> >
> >
> > JCS       put time for 50000 = 241; millis per =
> > 0.00482
> > JCS       get time for 50000 = 80; millis per =
> 0.0016
> > EHCache   put time for 50000 = 551; millis per =
> > 0.01102
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 240; millis per =
> > 0.0048
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 481; millis per =
> > 0.00962
> > EHCache   get time for 50000 = 130; millis per =
> > 0.0026
> >
> >
> > JCS       put time for 50000 = 230; millis per =
> > 0.0046
> > JCS       get time for 50000 = 181; millis per =
> > 0.00362
> > EHCache   put time for 50000 = 520; millis per =
> > 0.0104
> > EHCache   get time for 50000 = 101; millis per =
> > 0.00202
> >
> >
> > JCS       put time for 50000 = 220; millis per =
> > 0.0044
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 641; millis per =
> > 0.01282
> > EHCache   get time for 50000 = 110; millis per =
> > 0.0022
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 121; millis per =
> > 0.00242
> > EHCache   put time for 50000 = 590; millis per =
> > 0.0118
> > EHCache   get time for 50000 = 101; millis per =
> > 0.00202
> >
> >
> > JCS       put time for 50000 = 260; millis per =
> > 0.0052
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 581; millis per =
> > 0.01162
> > EHCache   get time for 50000 = 100; millis per =
> > 0.0020
> >
> >
> > JCS       put time for 50000 = 290; millis per =
> > 0.0058
> > JCS       get time for 50000 = 121; millis per =
> > 0.00242
> > EHCache   put time for 50000 = 570; millis per =
> > 0.0114
> > EHCache   get time for 50000 = 121; millis per =
> > 0.00242
> >
> >
> > JCS       put time for 50000 = 210; millis per =
> > 0.0042
> > JCS       get time for 50000 = 120; millis per =
> > 0.0024
> > EHCache   put time for 50000 = 561; millis per =
> > 0.01122
> > EHCache   get time for 50000 = 130; millis per =
> > 0.0026
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 151; millis per =
> > 0.00302
> > EHCache   put time for 50000 = 560; millis per =
> > 0.0112
> > EHCache   get time for 50000 = 111; millis per =
> > 0.00222
> >
> >
> > JCS       put time for 50000 = 250; millis per =
> > 0.0050
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 711; millis per =
> > 0.01422
> > EHCache   get time for 50000 = 100; millis per =
> > 0.0020
> >
> >
> > JCS       put time for 50000 = 251; millis per =
> > 0.00502
> > JCS       get time for 50000 = 90; millis per =
> 0.0018
> > EHCache   put time for 50000 = 511; millis per =
> > 0.01022
> > EHCache   get time for 50000 = 90; millis per =
> 0.0018
> >
> >
> > JCS       put time for 50000 = 220; millis per =
> > 0.0044
> > JCS       get time for 50000 = 100; millis per =
> > 0.0020
> > EHCache   put time for 50000 = 491; millis per =
> > 0.00982
> > EHCache   get time for 50000 = 90; millis per =
> 0.0018
> >
> >
> > JCS       put time for 50000 = 230; millis per =
> > 0.0046
> > JCS       get time for 50000 = 80; millis per =
> 0.0016
> > EHCache   put time for 50000 = 201; millis per =
> > 0.00402
> > EHCache   get time for 50000 = 390; millis per =
> > 0.0078
> >
> >
> > JCS       put time for 50000 = 201; millis per =
> > 0.00402
> > JCS       get time for 50000 = 120; millis per =
> > 0.0024
> > EHCache   put time for 50000 = 180; millis per =
> > 0.0036
> > EHCache   get time for 50000 = 411; millis per =
> > 0.00822
> >
> >
> > JCS       put time for 50000 = 210; millis per =
> 
=== message truncated ===


---------------------------------------------------------------------
To unsubscribe, e-mail: jcs-users-unsubscribe@jakarta.apache.org
For additional commands, e-mail: jcs-users-help@jakarta.apache.org