Movatterモバイル変換
[0]ホーム
string.join is abysmally slow
Ixokainews at myNOSPAM.org
Sun Apr 15 19:29:09 EDT 2001
Hello, I'd think that there has to be a better way to go about the problem. Imean, I'd imagine its slow because strings are immutable; every time youappend something new, it has to allocate a new block of memory to be theproper size, copy everything over, then deallocate the old one if its notreferenced anymore. This is just a guess, mind you. If your file is strictly one-address-per line, why not 'list =file.readlines()' then 'if email in list:'. Both operations take a fractionof a second on my p2-400mhz. I tested it with a mock-up file of 239 pretendemail addresses I generated. Then again... after loading the entire file into a list of 'lines',"regex = "|".join(lines)" is also nearly instantaneous for me. What versionof Python are you using?--Stephen(to reply, remove 'NOSPAM' and replace with 'seraph')"Graham Guttocks" <graham_guttocks at yahoo.co.nz> wrote in messagenews:mailman.987375622.11843.python-list at python.org...> Greetings,>> I've run into a performance problem in one of my functions, and wonder> if I could get some recommendations on how to speed things up.>> What I'm trying to do is read in a textfile containing e-mail> addresses, one per line, and use them to build a regular expression> object in the form "address1|address2|address3|addressN" to search> against.>> I'm using string.join to concatenate the addresses together, separated> by a `|'. The problem is that string.join is unacceptably slow in> this task. The following program takes 37 seconds on a PIII/700 to> process a 239-line file!>> -------------------------------------------------------------------->> import fileinput, re, string> list = []>> for line in fileinput.input(textfile):> # Comment or blank line?> if line == '' or line[0] in '#':> continue> else:> list.append(string.strip(line))> # "address1|address2|address3|addressN"> regex = string.join(list,'|')> regex = '"' + regex + '"'> reo = re.compile(regex, re.I)>> -------------------------------------------------------------------->>>_____________________________________________________________________________>http://movies.yahoo.com.au - Yahoo! Movies> - Now showing: Dude Where's My Car, The Wedding Planner, Traffic..>-----= Posted via Newsfeeds.Com, Uncensored Usenet News =-----http://www.newsfeeds.com - The #1 Newsgroup Service in the World!-----== Over 80,000 Newsgroups - 16 Different Servers! =-----
More information about the Python-listmailing list
[8]ページ先頭