diff --git a/benchmarks/basic_commands.py b/benchmarks/basic_commands.py
index 86d798aca2a7cacd911407becf4a9763f8578923_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ==..701995603c38dd4af75f72e30d7e3c5b1fe5da3e_YmVuY2htYXJrcy9iYXNpY19jb21tYW5kcy5weQ== 100644
--- a/benchmarks/basic_commands.py
+++ b/benchmarks/basic_commands.py
@@ -146,6 +146,7 @@
 
         self.revset = revset
 
+        self.tempdir = tempfile.mkdtemp(dir=os.environ.get('ASVTEMPDIR'))
         self.cachedir = os.path.join(REPOS_DIR, '.cache')
 
         from base64 import b64encode
@@ -179,6 +180,12 @@
 
                 shutil.rmtree(clone_path)
 
+    def teardown(self, *args, **kwargs):
+        try:
+            shutil.rmtree(self.tempdir)
+        except Exception:
+            pass
+
     def _identify_id(self, revset):
         rev = subprocess.check_output([
             self.hgpath, '--cwd', self.repo_path, 'identify', '-i', "-r", revset], env=self.environ)
@@ -188,7 +195,7 @@
     def clone_from_cache(self):
         try:
             import time
-            clone_path = os.path.join(self.cachedir, 'clone-%s' % time.time())
+            clone_path = os.path.join(self.tempdir, 'clone-%s' % time.time())
 
             os.mkdir(clone_path)