Perl is amazingly fast. I wrote a simple search engine for my site (about 500 pages), and I'm simply shocked at how fast it can open all those files, much less do any searching!
-Matt --------------- > From: Kem Tekinay <[EMAIL PROTECTED]> > Reply-To: REALbasic NUG <[email protected]> > Date: Fri, 08 Dec 2006 11:07:06 -0500 > To: REALbasic-NUG <[email protected]> > Conversation: The perl challenge > Subject: The perl challenge > > It started with some friendly ribbing. I have a friend who thinks that the > answer to all things is "perl," and he goes on and on about its benefits, > speed, flexibility, etc., etc. Meanwhile, perl code looks to me like > something my cat created when he walked across the keyboard. > > Having had enough, and with an actual, simple project to test, I created > equivalent perl and RB apps to process a 100 MB text file. The processing > was fairly simple: If a line was a pure number, a constant string was added > to the beginning of it, otherwise, the text was wrapped in another constant > string and quotes were replaced by double-quotes. > > For example, this text: > > 1 > Text 1 > 2 > Text 2 > 3 > Text "3" > > Became this text: > > case 1 > r = "Text 1" > case 2 > r = "Text 2" > case 3 > r = "Text ""3""" > > Imagine my surprise when it took RB a minute to do what perl did in 15 > seconds. I'm not surprised that perl is faster, only HOW much faster it is. > My argument was going to be, "see, difference wasn't that much, and RB is > much easier to read," but these results make it no contest. > > So my question is: Why is RB so much slower? What is it doing that's making > the difference? And could I do something to close the gap? > > The code I used for each is as follows: > > perl -lne 'chomp ; if(/^\d+$/){print ('\''case '\'' , $_)} else {s > |\"|\"\"|g ; print("r = \"" , $_ , "\"\n")}' test.txt > perltest.txt > > And for REALbasic: > > #pragma BackgroundTasks false > #pragma BoundsChecking false > > dim fIn, fOut as FolderItem > dim t as Double = microseconds > > fIn = DesktopFolder.Child( "test.txt" ) > fOut = DesktopFolder.Child( "output.txt" ) > > dim tIn as TextInputStream = fIn.OpenAsTextFile > dim tOut as TextOutputStream = fOut.CreateTextFile > > dim line as string > while not tIn.EOF > line = tIn.ReadLine > if IsNumeric( line ) then > tOut.WriteLine( "case " + line ) > else > line = ReplaceAllB( line, """", """""" ) > tOut.WriteLine( "r = """ + line + """" + chr( 13 ) ) > end if > wend > > tIn.Close > tOut.Close > > t = microseconds - t > t = t / 1000000 > > MsgBox( format( t, "#,0.000" ) + " seconds" ) > > BTW, I also created a version that loaded the whole file at once, split it, > modified it without testing (since I knew that every odd line was a number > and even line text) and dumped it back to a file. That took 24 seconds! > > __________________________________________________________________________ > Kem Tekinay (212) 201-1465 > MacTechnologies Consulting Fax (914) 242-7294 > http://www.mactechnologies.com Pager (917) 491-5546 > > To join the MacTechnologies Consulting mailing list, send an e-mail to: > [EMAIL PROTECTED] > > > > > > > > > _______________________________________________ > Unsubscribe or switch delivery mode: > <http://www.realsoftware.com/support/listmanager/> > > Search the archives of this list here: > <http://support.realsoftware.com/listarchives/lists.html> _______________________________________________ Unsubscribe or switch delivery mode: <http://www.realsoftware.com/support/listmanager/> Search the archives of this list here: <http://support.realsoftware.com/listarchives/lists.html>
