How can I speed this function up?

Chris cfriedl at bigpond.net.au
Sat Nov 18 03:40:16 CET 2006


This is just some dummy code to mimic what's being done in the real 
code. The actual code is python which is used as a scripting language in 
a third party app. The data structure returned by the app is more or 
less like the "data" list in the code below. The test for "ELEMENT" is 
necessary ... it just evaluates to true every time in this test code. In 
the real app perhaps 90% of tests will also be true.

So my question is how can I speed up what's happening inside the 
function write_data()? Only allowed to use vanilla python (no psycho or 
other libraries outside of a vanilla python install).

I have a vested interest in showing a colleague that a python app can 
yield results in a time comparable to his C-app, which he feels is mch 
faster. I'd like to know what I can do within the constraints of the 
python language to get the best speed possible. Hope someone can help.

def write_data1(out, data):
     for i in data:
         if i[0] is 'ELEMENT':
             out.write("%s %06d " % (i[0], i[1]))
             for j in i[2]:
                 out.write("%d " % (j))
             out.write("\n")

import timeit

# basic data mimicing data returned from 3rd party app
data = []
for i in range(500000):
     data.append(("ELEMENT", i, (1,2,3,4,5,6)))

# write data out to file
fname = "test2.txt"
out = open(fname,'w')
start= timeit.time.clock()
write_data2(out, data)
out.close()
print timeit.time.clock()-start





More information about the Python-list mailing list