Agree, indexes consume CPU, but as shown in the table,
performance for index and  CacheMode=LOCAL more then 2x.

CacheMode.CacheMode + TRANSACTIONAL     = 45 K op./sec
CacheMode.CacheMode + TRANSACTIONAL + setIndexedTypes = 107 K op./sec

CacheMode.CacheMode + ATOMIC    = 340 K op./sec
CacheMode.CacheMode + ATOMIC+ setIndexedTypes = 581 K op./sec


12.07.2016 0:15, Sergi Vladykin пишет:
I guess updating indexes is not free.

Sergi

On Mon, Jul 11, 2016 at 11:48 PM, AndreyVel <andrey4...@gmail.com> wrote:

Hello, I have created simple test for testing performance put operations
on single computer,
can anybody explain why performance for LOCAL mode different for Indexed
and non Indexed mode?


      Cache performance put(Integer, String)/sec: one client and 2
      remote servers.

CacheMode       TRANSACTIONAL   TRANSACTIONAL
setIndexedTypes(Integer, String)        ATOMIC  ATOMIC
setIndexedTypes(Integer, String)
LOCAL   45154   107306  340627  581250
REPLICATED      3270    2865    7272    5694
PARTITIONED     6773    5403    8558    6714


VM options -Xms1g -Xmx1g
Topology snapshot [ver=5, servers=2, clients=1, CPUs=8, heap=3.0GB]


public class CachePerformance {

     private static int CACHE_SIZE =100 * 1000;
     private static StringCACHE_NAME ="cachePerf";

     public static void main(String[] args) {
         try {
             Ignition.setClientMode(true);
             IgniteConfiguration igniteCfg =new IgniteConfiguration();
             igniteCfg.setPeerClassLoadingEnabled(true);

             Ignite ignite = Ignition.start(igniteCfg);
             CachePerformance.execute(ignite);
         }catch (Throwable ex) {
             ex.printStackTrace();
         }
     }

public static void execute(Ignite ignite)throws Exception {

     Random rand =new Random();

     for (CacheMode cacheMode : CacheMode.values()) {

         for (CacheAtomicityMode atomMode : CacheAtomicityMode.values()) {
             for (int indexMode =0; indexMode <=1; indexMode++) {

                 CacheConfiguration<Integer, String> cacheCfg =new
CacheConfiguration<>(CACHE_NAME);
                 if (indexMode ==1)
                     cacheCfg.setIndexedTypes(Integer.class, String.class);

                 cacheCfg.setAtomicityMode(atomMode);
                 cacheCfg.setCacheMode(cacheMode);

                 ignite.destroyCache(CACHE_NAME);
                 IgniteCache<Integer, String> cache =
ignite.getOrCreateCache(cacheCfg);
                 String cacheDesc ="cacheMode=" + cacheMode +", atomMode="
+ atomMode +", indexMode=" + indexMode;

                 long time = System.nanoTime();
                 for (int ind =0; ind <CACHE_SIZE; ind++) {
                         Integer key = rand.nextInt();
                         cache.put(key,"=" + ind);
                 }

                 long deltaMs = (System.nanoTime() - time) /1000000;
                 long perfSec = (deltaMs ==0) ?0 :1000 *CACHE_SIZE /
deltaMs;
                 System.out.println(cacheDesc +", Perf/Sec = " + perfSec);
             }
         }
     }


Reply via email to