Search code examples
pythonwindowsperformancetimeexecution-time

process_time() function in python not working as expected


Can someone help me understand how process_time() works? My code is

from time import process_time

t = process_time()


def fibonacci_of(n):
    if n in cache:  # Base case
        return cache[n]
    # Compute and cache the Fibonacci number
    cache[n] = fibonacci_of(n - 1) + fibonacci_of(n - 2)  # Recursive case
    return cache[n]


cache = {0: 0, 1: 1}
fib = [fibonacci_of(n) for n in range(1500)]
print(fib[-1])
print(process_time() - t)

And last print is always 0.0. My expected result is something like 0.764891862869 Docs at https://docs.python.org/3/library/time.html#time.process_time don't help newbie me :(

I tried some other functions and reading docs. But without success.


Solution

  • I'd assume this is OS dependent. Linux lets me get down to ~5 microseconds using process_time, but other operating systems might well not deal well with differences this small and return zero instead.

    It's for this reason that Python exposes other timers that are designed to be more accurate over shorter time scales. Specifically, perf_counter is specified as using:

    the highest available resolution to measure a short duration

    Using this lets me measure down to ~80 nanoseconds, whether I'm using perf_counter or perf_counter_ns.