Python / C: small runtime difference?
tim.hochberg at ieee.org
Fri Sep 12 19:56:57 CEST 2003
Alan Gauld wrote:
> On Tue, 9 Sep 2003 15:54:41 +0200, "Martin Schneider"
> <martin.schneider at illusion-factory.de> wrote:
>>for i in range(len(fileList)-1):
>> for j in range(len(fileList)-i-1):
>> if fileList[j+1] < fileList[j]:
>> tmp = fileList[j]
>> fileList[j] = fileList[j+1]
>> fileList[j+1] = tmp
> I think you might tweak that by doing:
> fileList[j],fileList[j+1] = fileList[j+1],fileList[j]
> which misses out the intermediate tmp assignment.
Careful here. You'd have to time it to be sure, but the above is
probably slower than what you're replacing. The reason is that the
above creates an anonymous tuple then unpacks it. More or less
tmp = (fileList[j+1], fileList[j])
fileList[j], fileList[j+1] = tmp
I'd be tempted to do it anyway in all but the tightest loops as I think
> If you are gonna tweak the C you might as well tweak the
> Python too! (But not with a real python, they tweak back
> hard! :-)
> Alan G.
> Author of the Learn to Program website
More information about the Python-list