diff --git a/contrib/check-pytype.sh b/contrib/check-pytype.sh
index 7dd466f13f9bc18e6073d178e46c4cd351ab2490_Y29udHJpYi9jaGVjay1weXR5cGUuc2g=..069735062524490fca4f7bf5c06e2d9cbe643942_Y29udHJpYi9jaGVjay1weXR5cGUuc2g= 100755
--- a/contrib/check-pytype.sh
+++ b/contrib/check-pytype.sh
@@ -68,6 +68,13 @@
 
 # TODO: include hgext and hgext3rd
 
+# use ts to produce some timing if available
+if ! command -v ts; then
+    ts() {
+        cat
+    }
+fi
+
 pytype --keep-going --jobs auto \
     doc/check-seclevel.py hgdemandimport hgext mercurial \
     -x hgext/absorb.py \
@@ -116,7 +123,8 @@
     -x mercurial/testing/storage.py \
     -x mercurial/thirdparty \
     -x mercurial/win32.py \
-    -x mercurial/wireprotov1server.py
+    -x mercurial/wireprotov1server.py \
+    | ts -i "(%.s)" | ts -s "%.s"
 
 if find .pytype/pyi -name '*.pyi' | xargs grep -ql '# Caught error'; then
     echo 'pytype crashed while generating the following type stubs:'