Python / C: small runtime difference?
Albert Hofkamp
hat at se-126.se.wtb.tue.nl
Fri Sep 12 08:08:06 EDT 2003
On Tue, 9 Sep 2003 15:54:41 +0200, Martin Schneider <martin.schneider at illusion-factory.de> wrote:
> Hi, Gerhard,
>
> thanks for your answer :-)
>
> Here's my python code:
>
> 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
>
> Of course I don't know what Python does here internally.
You are modifying lists in-place, which means no copies of the data and
no copies of the lists are made, everything is done using pointer
copying (and updating reference counts).
>> It's best to have an array of pointers to structs. Then in
>> your bubble-sort algorithm, only exchange the pointers, don't copy the
>> structs themselves.
>
> Okay - I'll try that :-)
That should make a huge difference for anything but the simplest data.
Also, using a better sort algorithm should improve performance
dramatically (i.e. compare your code versus the builtin sort() function
of lists).
>> So if you make your C code as
>> smart as Python automatically is <wink>, your C code should be a hell of
>> a lot faster than your Python code :-)
>
> Maybe :-) I'll let you know.
It probably will not become slower :-)
Albert
--
Unlike popular belief, the .doc format is not an open publically available format.
More information about the Python-list
mailing list