public V get(final K key) { return get(key, this.entryValidityChecker); }
public void put(final K key, final V value) { incrementReportEntity(this.putCount); final CacheEntry<V> entry = new CacheEntry<V>(value, this.useSoftReferences); // newSize will be -1 if traceExecution is false final int newSize = this.dataContainer.put(key, entry); if (this.traceExecution) { this.logger.trace( "[THYMELEAF][{}][{}][CACHE_ADD][{}] Adding cache entry in cache \"{}\" for key \"{}\". New size is {}.", new Object[] {TemplateEngine.threadIndex(), this.name, Integer.valueOf(newSize), this.name, key, Integer.valueOf(newSize)}); outputReportIfNeeded(); } }
private void outputReportIfNeeded() { final long currentTime = System.currentTimeMillis(); if ((currentTime - this.lastExecution) >= REPORT_INTERVAL) { // first check without need to sync synchronized (this) { if ((currentTime - this.lastExecution) >= REPORT_INTERVAL) { long hitCount = getHitCount(); long missCount = getMissCount(); long putCount = getPutCount(); long getCount = getGetCount(); double hitRatio = (double) hitCount / (double) getCount; double missRatio = 1 - hitRatio; this.logger.trace( String.format(REPORT_FORMAT, Integer.valueOf(size()), putCount, getCount, hitCount, missCount, hitRatio, missRatio, this.name)); this.lastExecution = currentTime; } } } }
public double getHitRatio() { long hitCount = getHitCount(); long getCount = getGetCount(); if (hitCount == 0 || getCount == 0) { return 0; } return (double) hitCount / (double) getCount; }
@Override protected final ICache<ExpressionCacheKey, Object> initializeExpressionCache() { final int maxSize = getExpressionCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<ExpressionCacheKey, Object>( getExpressionCacheName(), getExpressionCacheUseSoftReferences(), getExpressionCacheInitialSize(), maxSize, getExpressionCacheValidityChecker(), getExpressionCacheLogger(), getExpressionCacheEnableCounters()); }
private void outputReportIfNeeded() { if (this.traceExecution) { // fail fast final long currentTime = System.currentTimeMillis(); if ((currentTime - this.lastExecution) >= REPORT_INTERVAL) { // first check without need to sync synchronized (this) { if ((currentTime - this.lastExecution) >= REPORT_INTERVAL) { this.logger.trace( String.format(REPORT_FORMAT, Integer.valueOf(size()), Long.valueOf(this.putCount.get()), Long.valueOf(this.getCount.get()), Long.valueOf(this.hitCount.get()), Long.valueOf(this.missCount.get()), this.name)); this.lastExecution = currentTime; } } } } }
public double getMissRatio() { return 1 - getHitRatio(); }
@Override protected final ICache<TemplateCacheKey, TemplateModel> initializeTemplateCache() { final int maxSize = getTemplateCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<TemplateCacheKey, TemplateModel>( getTemplateCacheName(), getTemplateCacheUseSoftReferences(), getTemplateCacheInitialSize(), maxSize, getTemplateCacheValidityChecker(), getTemplateCacheLogger(), getTemplateCacheEnableCounters()); }
public V get(final K key, final ICacheEntryValidityChecker<? super K, ? super V> validityChecker) { incrementReportEntity(this.getCount); final CacheEntry<V> resultEntry = this.dataContainer.get(key); incrementReportEntity(this.missCount); if (this.traceExecution) { this.logger.trace( "[THYMELEAF][{}][{}][CACHE_MISS] Cache miss in cache \"{}\" for key \"{}\".", new Object[] {TemplateEngine.threadIndex(), this.name, this.name, key}); outputReportIfNeeded(); if (resultValue == null) { final int newSize = this.dataContainer.remove(key); incrementReportEntity(this.missCount); if (this.traceExecution) { this.logger.trace( "[THYMELEAF][{}][{}][CACHE_MISS] Cache miss in cache \"{}\" for key \"{}\".", new Object[] {TemplateEngine.threadIndex(), this.name, this.name, key}); outputReportIfNeeded(); incrementReportEntity(this.hitCount); if (this.traceExecution) { this.logger.trace( "[THYMELEAF][{}][{}][CACHE_HIT] Cache hit in cache \"{}\" for key \"{}\".", new Object[] {TemplateEngine.threadIndex(), this.name, this.name, key}); outputReportIfNeeded();
@Override protected final ICache<String, Properties> initializeMessageCache() { final int maxSize = getMessageCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<String, Properties>( getMessageCacheName(), getMessageCacheUseSoftReferences(), getMessageCacheInitialSize(), maxSize, getMessageCacheValidityChecker(), getMessageCacheLogger()); }
public V get(final K key) { return get(key, this.entryValidityChecker); }
public void put(final K key, final V value) { incrementReportEntity(this.putCount); final CacheEntry<V> entry = new CacheEntry<V>(value, this.useSoftReferences); // newSize will be -1 if traceExecution is false final int newSize = this.dataContainer.put(key, entry); if (this.traceExecution) { this.logger.trace( "[THYMELEAF][{}][{}][CACHE_ADD][{}] Adding cache entry in cache \"{}\" for key \"{}\". New size is {}.", new Object[] {TemplateEngine.threadIndex(), this.name, Integer.valueOf(newSize), this.name, key, Integer.valueOf(newSize)}); } outputReportIfNeeded(); }
@Override protected final ICache<String, Template> initializeTemplateCache() { final int maxSize = getTemplateCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<String, Template>( getTemplateCacheName(), getTemplateCacheUseSoftReferences(), getTemplateCacheInitialSize(), maxSize, getTemplateCacheValidityChecker(), getTemplateCacheLogger()); }
public V get(final K key, final ICacheEntryValidityChecker<? super K, ? super V> validityChecker) { incrementReportEntity(this.getCount); incrementReportEntity(this.missCount); if (this.traceExecution) { this.logger.trace( new Object[] {TemplateEngine.threadIndex(), this.name, this.name, key}); outputReportIfNeeded(); return null; new Object[] {TemplateEngine.threadIndex(), this.name, this.name, key}); incrementReportEntity(this.missCount); outputReportIfNeeded(); return null; incrementReportEntity(this.hitCount); outputReportIfNeeded(); return resultValue;
@Override protected final ICache<String, List<Node>> initializeFragmentCache() { final int maxSize = getFragmentCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<String, List<Node>>( getFragmentCacheName(), getFragmentCacheUseSoftReferences(), getFragmentCacheInitialSize(), maxSize, getFragmentCacheValidityChecker(), getFragmentCacheLogger()); }
@Override protected final ICache<String, Object> initializeExpressionCache() { final int maxSize = getExpressionCacheMaxSize(); if (maxSize == 0) { return null; } return new StandardCache<String, Object>( getExpressionCacheName(), getExpressionCacheUseSoftReferences(), getExpressionCacheInitialSize(), maxSize, getExpressionCacheValidityChecker(), getExpressionCacheLogger()); }