From: Rob Biedenharn Date: 2008-06-25T01:48:36+09:00 Subject: Re: Performance improvement possible? On Jun 24, 2008, at 12:23 PM, Philip Rhoades wrote: > People, > > I have asked before about Ruby to C conversion programs and other > alternatives with no really satisfactory solution for my particular > situation. Are you looking at all solutions? > I decided to test out a conversion of one of the C programs and see > what sort of results I get. This particular small C program is > called 32,000 times from loops within a shell script. The program > then processes a text file, writes a text file and exits. The same > shell script with a Ruby program replacing the C program does > exactly the same thing but takes 8.5 times as long (27m/227m). Can you replace the whole shell script with a ruby program? Then whatever startup cost you have for the Ruby interpreter is paid once rather than 32_000 times. > The profile on ONE execution of the Ruby program produced: > > % cumulative self self total > time seconds seconds calls ms/call ms/call name > 65.18 14.15 14.15 1 14150.00 21700.00 Array#each > 12.44 16.85 2.70 93792 0.03 0.03 Array#[] > 8.15 18.62 1.77 62108 0.03 0.03 String#split > 6.73 20.08 1.46 53215 0.03 0.03 String#== > 2.58 20.64 0.56 66 8.48 12.73 Range#each > > It would be SO much nicer to rewrite some stuff that needs rewriting > and write ALL new stuff in Ruby but this looks impossible with these > times . . > > Any suggestions for performance improvements? > > I am using F9. F9? Is that some key in an IDE that runs your ruby code? > Thanks, > > Phil. > -- > Philip Rhoades > > Pricom Pty Limited (ACN 003 252 275 ABN 91 003 252 275) > GPO Box 3411 > Sydney NSW 2001 > Australia > E-mail: phil@pricom.com.au Depending on what your C program has to do and why a shell script is calling it in the first place, you might have other benefits from using Ruby in place of the shell script. A couple years back, I worked on a similar kind of project that was replacing shell scripts with Perl and there were many benefits that Perl could exploit that just could not be managed by constructs in the shell. -Rob Rob Biedenharn http://agileconsultingllc.com Rob@AgileConsultingLLC.com