Timing UnitsΒΆ

This example demonstrates how you can change the units in which the time is reported.

Write the following demo script to disk

echo "if 1:
     from line_profiler import profile

     @profile
     def is_prime(n):
         max_val = n ** 0.5
         stop = int(max_val + 1)
         for i in range(2, stop):
             if n % i == 0:
                 return False
         return True


     def find_primes(size):
         primes = []
         for n in range(size):
             flag = is_prime(n)
             if flag:
                 primes.append(n)
         return primes


     def main():
         print('start calculating')
         primes = find_primes(10)
         primes = find_primes(1000)
         primes = find_primes(100000)
         print(f'done calculating. Found {len(primes)} primes.')


     if __name__ == '__main__':
         main()
" > script.py

Run the script with line profiling on. To change the unit in which time is reported use the --unit command line argument. The following example shows 4 variants:

You will notice the relevant difference in the output lines:

==============
unit 1 variant
==============

Timer unit: 1 s

     ...

     6    101010          0.0      0.0      3.6              max_val = n ** 0.5
     7    101010          0.1      0.0      4.0              stop = int(max_val + 1)

     ...

=================
unit 1e-3 variant
=================

Timer unit: 0.001 s

     ...

     6    101010         46.6      0.0      3.6              max_val = n ** 0.5
     7    101010         51.5      0.0      4.0              stop = int(max_val + 1)

     ...

=================
unit 1e-6 variant
=================

Timer unit: 1e-06 s

     ...

     6    101010      46558.2      0.5      3.6              max_val = n ** 0.5
     7    101010      51491.7      0.5      4.0              stop = int(max_val + 1)

     ...

=================
unit 1e-9 variant
=================

Timer unit: 1e-09 s

     ...

     6    101010   46558246.0    460.9      3.6              max_val = n ** 0.5
     7    101010   51491716.0    509.8      4.0              stop = int(max_val + 1)

     ...