diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/HitBooleanTable.java b/src/main/java/com/googlesource/gerrit/plugins/task/HitBooleanTable.java
index 8271fb9..39365cb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/HitBooleanTable.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/HitBooleanTable.java
@@ -27,6 +27,7 @@
     public long size;
     public int numberOfRows;
     public int numberOfColumns;
+    public long sumNanosecondsLoading;
   }
 
   protected Statistics statistics;
@@ -44,6 +45,13 @@
     return value;
   }
 
+  public StopWatch createLoadingStopWatch() {
+    if (statistics == null) {
+      return StopWatch.DISABLED;
+    }
+    return new StopWatch.Enabled().setNanosConsumer(ns -> statistics.sumNanosecondsLoading += ns);
+  }
+
   @Override
   public void initStatistics() {
     statistics = new Statistics();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/task/MatchCache.java b/src/main/java/com/googlesource/gerrit/plugins/task/MatchCache.java
index 55cae12..b1dcda5 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/task/MatchCache.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/task/MatchCache.java
@@ -16,6 +16,7 @@
 
 import com.google.gerrit.entities.Change;
 import com.google.gerrit.exceptions.StorageException;
+import com.google.gerrit.index.query.Matchable;
 import com.google.gerrit.index.query.QueryParseException;
 import com.google.gerrit.server.query.change.ChangeData;
 
@@ -36,6 +37,7 @@
     return null;
   }
 
+  @SuppressWarnings("try")
   public boolean match(ChangeData changeData, String query)
       throws StorageException, QueryParseException {
     if (query == null || "true".equalsIgnoreCase(query)) {
@@ -43,8 +45,11 @@
     }
     Boolean isMatched = resultByChangeByQuery.get(query, changeData.getId());
     if (isMatched == null) {
-      isMatched = predicateCache.getPredicate(query).asMatchable().match(changeData);
-      resultByChangeByQuery.put(query, changeData.getId(), isMatched);
+      Matchable<ChangeData> matchable = predicateCache.getPredicate(query).asMatchable();
+      try (StopWatch stopWatch = resultByChangeByQuery.createLoadingStopWatch()) {
+        isMatched = matchable.match(changeData);
+        resultByChangeByQuery.put(query, changeData.getId(), isMatched);
+      }
     }
     return isMatched;
   }
