diff --git a/src/main/java/bdv/server/CellHandler.java b/src/main/java/bdv/server/CellHandler.java
index 0f363d7a3a1ff36f940113360083397fc619c751..4762b14dae47ca63a33dd2377f9aba921c777103 100644
--- a/src/main/java/bdv/server/CellHandler.java
+++ b/src/main/java/bdv/server/CellHandler.java
@@ -51,7 +51,9 @@ import java.util.Comparator;
 import java.util.HashMap;
 import java.util.Stack;
 import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.concurrent.atomic.AtomicLong;
 
 public class CellHandler extends ContextHandler {
     private static final org.eclipse.jetty.util.log.Logger LOG = Log.getLogger(CellHandler.class);
@@ -168,6 +170,8 @@ public class CellHandler extends ContextHandler {
 
     private final AtomicInteger compressedAccumulation = new AtomicInteger(0);
     private final AtomicInteger uncompressedAccumulation = new AtomicInteger(0);
+    private final AtomicInteger qcmpCellResponseCount = new AtomicInteger(0);
+    private final AtomicLong compressionTimeAccumulation = new AtomicLong(0);
 
 
     public CellHandler(final String baseUrl,
@@ -264,6 +268,8 @@ public class CellHandler extends ContextHandler {
             compressorOptions.setBitsPerCodebookIndex(bitsPerCodebookIndex);
 
             final ImageCompressor compressor = new ImageCompressor(compressorOptions, levelCacheFile);
+            //            compressor.allowKdTreeVectorLookup();
+
             final int actualKey = compressorIndex + compressionParams.getCompressFromMipmapLevel();
             compressors.put(actualKey, compressor);
             LOG.info(String.format("  Loaded codebook of size %d for mipmap level %d. '%s'",
@@ -399,7 +405,6 @@ public class CellHandler extends ContextHandler {
             response.setStatus(HttpServletResponse.SC_OK);
             baseRequest.setHandled(true);
         } else if (parts[0].equals("cell_qcmp")) {
-            final Stopwatch stopwatch = Stopwatch.startNew();
             final int mipmapLevel = Integer.parseInt(parts[4]);
             final int[] cellDims = new int[]{Integer.parseInt(parts[5]), Integer.parseInt(parts[6]), Integer.parseInt(parts[7])};
 
@@ -409,8 +414,13 @@ public class CellHandler extends ContextHandler {
             final FlatBufferInputData inputData = createInputDataObject(data, cellDims);
             final MemoryOutputStream cellCompressionStream = getCachedCompressionBuffer();
 
+            final Stopwatch compressionStopwatch = Stopwatch.startNew();
+
             final int compressedContentLength = getCompressorForMipmapLevel(mipmapLevel).streamCompressChunk(cellCompressionStream,
                                                                                                              inputData);
+            compressionStopwatch.stop();
+            compressionTimeAccumulation.addAndGet(compressionStopwatch.getElapsedInUnit(TimeUnit.NANOSECONDS));
+            qcmpCellResponseCount.incrementAndGet();
 
             response.setContentLength(compressedContentLength);
             try (final OutputStream responseStream = response.getOutputStream()) {
@@ -431,19 +441,17 @@ public class CellHandler extends ContextHandler {
             response.setStatus(HttpServletResponse.SC_OK);
             baseRequest.setHandled(true);
             returnBufferForReuse(cellCompressionStream);
-            stopwatch.stop();
 
             final long currentlySent = compressedAccumulation.addAndGet(compressedContentLength);
             final long uncompressedWouldSent = uncompressedAccumulation.addAndGet(data.length * 2);
 
             if (compressionParams.isVerbose()) {
 
-                LOG.info(String.format("Sending %dB instead of %dB. Currently sent %dB instead of %dB. Handler finished in %s",
+                LOG.info(String.format("Sending %dB instead of %dB. Currently sent %dB instead of %dB.",
                                        compressedContentLength,
                                        (data.length * 2),
                                        currentlySent,
-                                       uncompressedWouldSent,
-                                       stopwatch.getElapsedTimeString()));
+                                       uncompressedWouldSent));
 
             }
         } else if (parts[0].equals("init")) {
@@ -458,6 +466,11 @@ public class CellHandler extends ContextHandler {
     private void respondWithCompressionSummary(final Request baseRequest, final HttpServletResponse response) throws IOException {
         final long currentlySent = compressedAccumulation.get();
         final long uncompressedWouldSent = uncompressedAccumulation.get();
+        final int qcmpRequestCount = qcmpCellResponseCount.get();
+        final long accumulatedNs = compressionTimeAccumulation.get();
+
+        final long totalRequestTimeMs = TimeUnit.MILLISECONDS.convert(accumulatedNs, TimeUnit.NANOSECONDS);
+        final long averageTimePerRequestMs = (long) ((double) totalRequestTimeMs / (double) qcmpRequestCount);
 
         final double sentKB = ((double) currentlySent / 1000.0);
         final double sentMB = ((double) currentlySent / 1000.0) / 1000.0;
@@ -465,10 +478,13 @@ public class CellHandler extends ContextHandler {
         final double wouldSentMB = ((double) uncompressedWouldSent / 1000.0) / 1000.0;
         final double percentage = (double) currentlySent / (double) uncompressedWouldSent;
 
+        final String msg = String.format("Currently sent %d B (%.1f KB, %.1f MB) instead of %d B (%.1f KB, %.1f MB).\nPercentage: %.3f\n" +
+                                                 "Total compression time: %d ms, Average time per request: %d ms",
+                                         currentlySent, sentKB, sentMB, uncompressedWouldSent, wouldSentKB, wouldSentMB, percentage,
+                                         totalRequestTimeMs, averageTimePerRequestMs);
 
         respondWithString(baseRequest, response, "text/plain",
-                          String.format("Currently sent %d B (%.1f KB, %.1f MB) instead of %d B (%.1f KB, %.1f MB).\nPercentage: %.3f",
-                                        currentlySent, sentKB, sentMB, uncompressedWouldSent, wouldSentKB, wouldSentMB, percentage),
+                          msg,
                           HttpServletResponse.SC_OK);
 
     }