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)