I usually write codes(functions) on www.codefights.com as a competitor.So speed is one of the important part of the code . How can i measure the speed of a certain code in python language whether it is the lambda function or a def function .
The timeit() method of the timeit module can also be used to calculate the execution time of any program in python. The timeit() method accepts four arguments. Let's see what are these arguments: setup, which takes the code which runs before the execution of the main program, the default value is pass.
In Python, we have a by default module for benchmarking which is called timeit. With the help of the timeit module, we can measure the performance of small bit of Python code within our main program.
In 3 Step ;)
Step 1: install line_profiler
pip install line_profiler
Step 2: Add @profile
to your code:
from time import sleep
@profile
def so_slow(bar):
sleep(5)
return bar
if __name__ == "__main__":
so_slow(5)
Step 3: Test your code:
kernprof -l -v your_code.py
Wrote profile results to your_code.py.lprof
Timer unit: 1e-06 s
Total time: 5.00283 s
File: your_code.py
Function: so_slow at line 4
Line # Hits Time Per Hit % Time Line Contents
==============================================================
4 @profile
5 def so_slow(bar):
6 1 5002830 5002830.0 100.0 sleep(5)
7 1 2 2.0 0.0 return bar
You can use memory_profiler
too, Install it, add profile and call it:
pip install memory_profiler
python -m memory_profiler your_code.py
Filename: your_code.py
Line # Mem usage Increment Line Contents
================================================
4 21.289 MiB 0.000 MiB @profile
5 def so_slow(bar):
6 21.289 MiB 0.000 MiB sleep(5)
7 21.289 MiB 0.000 MiB return bar
You can use objgraph to find memory leak
or draw a graph of your code:
from time import sleep
import objgraph
x = [1]
objgraph.show_backrefs([x], filename='sample-backref-graph.png')
def so_slow(bar):
sleep(5)
return bar
if __name__ == "__main__":
so_slow(5)
Reference : A guide to analyzing Python performance
Have a look at the timeit module in pythons standard libaray:
https://docs.python.org/2/library/timeit.html
>>> import timeit
>>> timeit.timeit('"-".join(str(n) for n in range(100))', number=10000)
0.8187260627746582
>>> timeit.timeit('"-".join([str(n) for n in range(100)])', number=10000)
0.7288308143615723
>>> timeit.timeit('"-".join(map(str, range(100)))', number=10000)
0.5858950614929199
To give the timeit module access to functions you define, you can pass a setup parameter which contains an import statement:
def test():
"""Stupid test function"""
L = []
for i in range(100):
L.append(i)
if __name__ == '__main__':
import timeit
print(timeit.timeit("test()", setup="from __main__ import test"))
For instance:
import timeit
def a():
return 1+1
print timeit.timeit(a, number=1000000)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With