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
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