On Tue, May 5, 2015 at 3:00 PM, Dave Angel <da...@davea.name> wrote: > def loop(func, funcname, arg): > start = time.time() > for i in range(repeats): > func(arg, True) > print("{0}({1}) took {2:7.4}".format(funcname, arg, time.time()-start)) > > start = time.time() > for i in range(repeats): > func(arg) > print("{0}({1}) took {2:7.4}".format(funcname, arg, time.time()-start))
Note that you're explicitly passing True in one case but leaving the default in the other. I don't know whether that might be responsible for the difference you're seeing. Also, it's best to use the timeit module for timing code, e.g.: >>> from timeit import Timer >>> t1 = Timer("factorial_iterative(100000, False)", "from __main__ import >>> factorial_iterative") >>> t1.repeat(10, number=1) [3.8517245299881324, 3.7571076710009947, 3.7780062559759244, 3.848508063936606, 3.7627131739864126, 3.8278848479967564, 3.776115525048226, 3.83024005102925, 3.8322679550619796, 3.8195601429324597] >>> min(_), sum(_) / len(_) (3.7571076710009947, 3.8084128216956743) >>> t2 = Timer("factorial_iterative(100000, True)", "from __main__ import >>> factorial_iterative") >>> t2.repeat(10, number=1) [3.8363616950809956, 3.753201302024536, 3.7838632150087506, 3.7670978900277987, 3.805312803015113, 3.7682680500438437, 3.856655619922094, 3.796431727008894, 3.8224815409630537, 3.765664782957174] >>> min(_), sum(_) / len(_) (3.753201302024536, 3.7955338626052253) As you can see, in my testing the True case was actually marginally (probably not significantly) faster in both the min and the average. -- https://mail.python.org/mailman/listinfo/python-list