Making code faster
Bengt Richter
bokr at oz.net
Wed Jul 17 11:56:49 EDT 2002
More information about the Python-list mailing list
Wed Jul 17 11:56:49 EDT 2002
- Previous message (by thread): Making code faster
- Next message (by thread): Making code faster
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
On Wed, 17 Jul 2002 12:06:39 +0200, JB <jblazi at hotmail.com> wrote: >Bengt Richter wrote: > >>>[<string>,<string>] >> - Do you mean that literally? I.e., would >> "['abc','def']\n" >> be a valid example? >> - Why do you have to eval() it? That is probably >> timeconsuming compared to alternatives. > >I thought, that would be fast. I can choose the format that >is best. (But probably, I 'd like to have a text format.) >So I could shoose >abc def Simple is generally good ;-) >too. > >> - Are there always two elements in the list? >Yes. > >Now I have changed my program to > > i = -1 > print 'loading file' > def tmp1(s,color=self.sv.lv.newColor): > global i > i += 1 > j = string.find(s,' ') > return QSimpleViewItem(i,color,[s[:j],s[j+1:-1]]) Replacing the above 2 lines with the following one should be faster: return QSimpleViewItem(i,color,s.split()) It assumes you have an s from your file that looks like <opt ws><item1 with no embedded whitespace><ws><item2 with no embedded whitespace><opt ws> Where <opt ws> is one or more optional white space characters [ \t\r\n\f] and <ws> is at least one white space character. Note how split() works: >>> 'abc def'.split() ['abc', 'def'] >>> 'abc def\n'.split() ['abc', 'def'] >>> ' abc def \n'.split() ['abc', 'def'] >>> ' abc def \n '.split() ['abc', 'def'] >>> > > try: > myfile = open(filename) > except: > pass > else: > tmp = myfile.readlines() > print 'lines loaded' > myfile.close() > self.sv.lv.rows = map(tmp1,tmp) > self.sv.lv.visible = range(len(self.sv.lv.rows)) > print 'lines decoded',self.sv.lv.rows[0].col[0] > >This is really faster. I did not undertand, how to get rid >of the global variable <i>, but even if I do not use i at >all and replace it by 0, the time I need is the same. > That was a good experiment, showing that global/local is insignificant compared to other overheads in this particular loop. But if you have a loop where the other stuff is really fast, you will notice a difference when you execute enough loops. Regards, Bengt Richter
- Previous message (by thread): Making code faster
- Next message (by thread): Making code faster
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list