Commits

holger krekel committed 9de7183

add two benchmarks for listdir

Comments (0)

Files changed (1)

bench/localpath.py

+
+import py
+import timeit
+
+class Listdir:
+    numiter = 100000
+    numentries = 100
+
+    def setup(self):
+        tmpdir = py.path.local.make_numbered_dir(self.__class__.__name__)
+        for i in range(self.numentries):
+            tmpdir.join(str(i))
+        self.tmpdir = tmpdir
+
+    def run(self):
+        return self.tmpdir.listdir()
+
+class Listdir_arg(Listdir):
+    numiter = 100000
+    numentries = 100
+
+    def run(self):
+        return self.tmpdir.listdir("47")
+
+class Join_onearg(Listdir):
+    def run(self):
+        self.tmpdir.join("17")
+        self.tmpdir.join("18")
+        self.tmpdir.join("19")
+
+class Join_multi(Listdir):
+    def run(self):
+        self.tmpdir.join("a", "b")
+        self.tmpdir.join("a", "b", "c")
+        self.tmpdir.join("a", "b", "c", "d")
+
+class Check(Listdir):
+    def run(self):
+        self.tmpdir.check()
+        self.tmpdir.check()
+        self.tmpdir.check()
+
+class CheckDir(Listdir):
+    def run(self):
+        self.tmpdir.check(dir=1)
+        self.tmpdir.check(dir=1)
+        assert not self.tmpdir.check(dir=0)
+
+class CheckDir2(Listdir):
+    def run(self):
+        self.tmpdir.stat().isdir()
+        self.tmpdir.stat().isdir()
+        assert self.tmpdir.stat().isdir()
+
+class CheckFile(Listdir):
+    def run(self):
+        self.tmpdir.check(file=1)
+        assert not self.tmpdir.check(file=1)
+        assert self.tmpdir.check(file=0)
+
+if __name__ == "__main__":
+    import time
+    for cls in [Listdir, Listdir_arg,
+                Join_onearg, Join_multi,
+               Check, CheckDir, CheckDir2, CheckFile,]:
+
+        inst = cls()
+        inst.setup()
+        now = time.time()
+        for i in xrange(cls.numiter):
+            inst.run()
+        elapsed = time.time() - now
+        print "%s: %d loops took %.2f seconds, per call %.6f" %(
+               cls.__name__,
+                cls.numiter, elapsed, elapsed / cls.numiter)