From: William James Date: 2007-09-22T16:25:03+09:00 Subject: Re: I am new to Ruby and I could use some expert advice as to how I can make this code run faster. Ruby Maniac wrote: > I am new to Ruby and I could use some expert advice as to how I can > make this code run faster. > > def scramble(fname) > f = File.new(fname, "rb") > _fname = fname + ".scrambled" > begin > File.exist?(_fname) if File.delete(_fname) > rescue > end > ff = File.new(_fname, "wb+") > for l in f > l.each_byte{|c| ff.write((c | 0x80).chr) } > end > f.close() > ff.close() > end About 2.8 times as fast. def scramble( fname ) _fname = fname + ".scrambled" mask = 0x8080808080808080 data = File.open( fname, "rb" ){|f| f.read } pad = (8 - (data.size % 8)) % 8 data << "p" * pad File.open( _fname, "wb"){|ff| array = data.unpack('Q*') array.map!{|x| x | mask } ff.write( array.pack('Q*')[0 ... -pad] ) } end