diff --git a/benchmarks/others.py b/benchmarks/others.py
index 2f723801be48ce9a4e4decd5a760e60a8b92c1bf_YmVuY2htYXJrcy9vdGhlcnMucHk=..34378aac908eacdfede4ffdc77c2dc9b5803acef_YmVuY2htYXJrcy9vdGhlcnMucHk= 100644
--- a/benchmarks/others.py
+++ b/benchmarks/others.py
@@ -1,38 +1,3 @@
-from .utils import perfbench
-
-
-@perfbench()
-def track_tags(perf):
-    return perf("perftags")
-
-
-@perfbench()
-def track_status(perf):
-    return perf("perfstatus")
-
-
-@perfbench()
-def track_manifest(perf):
-    return perf("perfmanifest", "tip")
-
-
-@perfbench()
-def track_heads(perf):
-    return perf("perfheads")
-
-
-@perfbench()
-def track_branchmap(perf):
-    return perf("perfbranchmap")
-
-
-@perfbench()
-def track_startup(perf):
-    return perf("perfstartup")
-
-
-@perfbench()
-def track_ancestors(perf):
-    return perf("perfancestors")
+from .utils import BaseTestSuite
 
 
@@ -37,6 +2,7 @@
 
 
-@perfbench()
-def track_changegroupchangelog(perf):
-    return perf("perfchangegroupchangelog")
+class PerfTestSuite(BaseTestSuite):
+
+    def track_tags(self, *args, **kwargs):
+        return self.perfext('perftags')
 
@@ -42,5 +8,4 @@
 
-@perfbench()
-def track_dirstate(perf):
-    return perf("perfdirstate")
+    def track_status(self, *args, **kwargs):
+        return self.perfext("perfstatus")
 
@@ -46,2 +11,4 @@
 
+    def track_manifest(self, *args, **kwargs):
+        return self.perfext("perfmanifest", "tip")
 
@@ -47,5 +14,4 @@
 
-@perfbench()
-def track_perfdirstatewrite(perf):
-    return perf("perfdirstatewrite")
+    def track_heads(self, *args, **kwargs):
+        return self.perfext("perfheads")
 
@@ -51,2 +17,4 @@
 
+    def track_branchmap(self, *args, **kwargs):
+        return self.perfext("perfbranchmap")
 
@@ -52,6 +20,4 @@
 
-@perfbench()
-def track_perffncacheencode(perf):
-    return perf("perffncacheencode")
-
+    def track_startup(self, *args, **kwargs):
+        return self.perfext("perfstartup")
 
@@ -57,5 +23,4 @@
 
-@perfbench()
-def track_perffncachewrite(perf):
-    return perf("perffncachewrite")
+    def track_ancestors(self, *args, **kwargs):
+        return self.perfext("perfancestors")
 
@@ -61,2 +26,4 @@
 
+    def track_changegroupchangelog(self, *args, **kwargs):
+        return self.perfext("perfchangegroupchangelog")
 
@@ -62,5 +29,4 @@
 
-@perfbench()
-def track_perffncacheload(perf):
-    return perf("perffncacheload")
+    def track_dirstate(self, *args, **kwargs):
+        return self.perfext("perfdirstate")
 
@@ -66,2 +32,4 @@
 
+    def track_perfdirstatewrite(self, *args, **kwargs):
+        return self.perfext("perfdirstatewrite")
 
@@ -67,5 +35,4 @@
 
-@ perfbench()
-def track_perfindex(perf):
-    return perf("perfindex")
+    def track_perffncacheencode(self, *args, **kwargs):
+        return self.perfext("perffncacheencode")
 
@@ -71,2 +38,4 @@
 
+    def track_perffncachewrite(self, *args, **kwargs):
+        return self.perfext("perffncachewrite")
 
@@ -72,5 +41,4 @@
 
-@perfbench()
-def track_perfparents(perf):
-    return perf("perfparents")
+    def track_perffncacheload(self, *args, **kwargs):
+        return self.perfext("perffncacheload")
 
@@ -76,2 +44,4 @@
 
+    def track_perfindex(self, *args, **kwargs):
+        return self.perfext("perfindex")
 
@@ -77,5 +47,4 @@
 
-@perfbench()
-def track_perfphases(perf):
-    return perf("perfphases")
+    def track_perfparents(self, *args, **kwargs):
+        return self.perfext("perfparents")
 
@@ -81,2 +50,4 @@
 
+    def track_perfphases(self, *args, **kwargs):
+        return self.perfext("perfphases")
 
@@ -82,4 +53,3 @@
 
-@perfbench()
-def track_perfwalk(perf):
-    return perf("perfwalk")
+    def track_perfwalk(self, *args, **kwargs):
+        return self.perfext("perfwalk")