[Tutor] how to calculate execution time and complexity

Christian Witts cwitts at compuscan.co.za
Fri Oct 28 08:20:22 CEST 2011


On 2011/10/28 07:38 AM, Praveen Singh wrote:
> >>>  splitWord('google',  2)
>      ['go',  'og',  'le']
>
>      >>>  splitWord('google',  3)
>      ['goo',  'gle']
>
>      >>>  splitWord('apple',  1)
>      ['a',  'p',  'p',  'l',  'e']
>
>      >>>  splitWord('apple',  4)
>      ['appl',  'e']
>
>
>
> def splitWord(word, number):
> 	length=len(word)
>      	list1=[]
>      	x=0
>      	increment=number		
>      	while number<=length+increment:
>          	list1.append(word[x:number])
>        		x=x+increment
>
>          	number=number+increment
>
>      	for d in list1:
>          	if d=='':
>              		list1.remove('')
>      	return list1
>
> I am getting the desired output and this code is working fine..but i think it is quite bulky for this small operation.
>
>
> qus.1-- can you guys suggest me some better solution??
> qus 2-- i know writing just a piece of code is not going to help me. i have to write efficient code.i want to know how to calculate execution time of my code and
>
>          can you guys suggest me some links so that i can learn how to find complexity of code??
>
> Thanks in advance...
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor at python.org
> To unsubscribe or change subscription options:
> http://mail.python.org/mailman/listinfo/tutor

Below [1] is how I would write it, which is simply a re-factoring of 
your code so it's cleaner and more compact.  For calculating execution 
time you can use the `timeit` module [2] and for more in-depth analysis 
you can look at `profile` [3] and further to the bare-bones `dis` [4].

[1]
 >>> def splitWord(word, number):
...     x = []
...     for y in xrange(0, len(word), number):
...         x.append(word[y:y+number])
...     return x
...
 >>> splitWord('google', 1)
['g', 'o', 'o', 'g', 'l', 'e']
 >>> splitWord('google', 2)
['go', 'og', 'le']
 >>> splitWord('google', 3)
['goo', 'gle']
 >>> splitWord('google', 4)
['goog', 'le']
 >>> splitWord('google', 5)
['googl', 'e']
 >>> splitWord('google', 6)
['google']
 >>> splitWord('google', 7)
['google']

[2] http://www.doughellmann.com/PyMOTW/timeit/
[3] http://www.doughellmann.com/PyMOTW/profile/index.html#module-profile
[4] http://www.doughellmann.com/PyMOTW/dis/

-- 

Christian Witts
Python Developer

//
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/tutor/attachments/20111028/d33d8dac/attachment.html>


More information about the Tutor mailing list