On Tue, Jan 24, 2023 at 1:26 PM <ma...@apache.org> wrote:
>
> This is an automated email from the ASF dual-hosted git repository.
>
> markt pushed a commit to branch 9.0.x
> in repository https://gitbox.apache.org/repos/asf/tomcat.git
>
> commit a7bf4d84f753d69acb66f5e45f5bc767a1d55e49
> Author: Mark Thomas <ma...@apache.org>
> AuthorDate: Tue Jan 24 12:22:01 2023 +0000
>
>     LongAdder is a better choice for statistics collection

Never heard of that before, but I see it's already there in Java 8.

Rémy

> ---
>  java/org/apache/catalina/webresources/Cache.java | 17 +++++++++--------
>  1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/java/org/apache/catalina/webresources/Cache.java 
> b/java/org/apache/catalina/webresources/Cache.java
> index 949117f521..4893a289cb 100644
> --- a/java/org/apache/catalina/webresources/Cache.java
> +++ b/java/org/apache/catalina/webresources/Cache.java
> @@ -22,6 +22,7 @@ import java.util.TreeSet;
>  import java.util.concurrent.ConcurrentHashMap;
>  import java.util.concurrent.ConcurrentMap;
>  import java.util.concurrent.atomic.AtomicLong;
> +import java.util.concurrent.atomic.LongAdder;
>
>  import org.apache.catalina.WebResource;
>  import org.apache.catalina.WebResourceRoot.CacheStrategy;
> @@ -48,8 +49,8 @@ public class Cache {
>      private int objectMaxSize = (int) maxSize / OBJECT_MAX_SIZE_FACTOR;
>      private CacheStrategy cacheStrategy;
>
> -    private AtomicLong lookupCount = new AtomicLong(0);
> -    private AtomicLong hitCount = new AtomicLong(0);
> +    private LongAdder lookupCount = new LongAdder();
> +    private LongAdder hitCount = new LongAdder();
>
>      private final ConcurrentMap<String, CachedResource> resourceCache = new 
> ConcurrentHashMap<>();
>
> @@ -70,7 +71,7 @@ public class Cache {
>              }
>          }
>
> -        lookupCount.incrementAndGet();
> +        lookupCount.increment();
>
>          CachedResource cacheEntry = resourceCache.get(path);
>
> @@ -138,14 +139,14 @@ public class Cache {
>                  cacheEntry.validateResource(useClassLoaderResources);
>              }
>          } else {
> -            hitCount.incrementAndGet();
> +            hitCount.increment();
>          }
>
>          return cacheEntry;
>      }
>
>      protected WebResource[] getResources(String path, boolean 
> useClassLoaderResources) {
> -        lookupCount.incrementAndGet();
> +        lookupCount.increment();
>
>          // Don't call noCache(path) since the class loader only caches
>          // individual resources. Therefore, always cache collections here
> @@ -196,7 +197,7 @@ public class Cache {
>                  cacheEntry.validateResources(useClassLoaderResources);
>              }
>          } else {
> -            hitCount.incrementAndGet();
> +            hitCount.increment();
>          }
>
>          return cacheEntry.getWebResources();
> @@ -291,11 +292,11 @@ public class Cache {
>      }
>
>      public long getLookupCount() {
> -        return lookupCount.get();
> +        return lookupCount.sum();
>      }
>
>      public long getHitCount() {
> -        return hitCount.get();
> +        return hitCount.sum();
>      }
>
>      public void setObjectMaxSize(int objectMaxSize) {
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
> For additional commands, e-mail: dev-h...@tomcat.apache.org
>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to