On Sep 20, 6:02 pm, Ruby Maniac <raych... / hotmail.com> wrote:
> I am new to Ruby and I could use some expert advice as to how I can
> make this code run faster.

Write a C extension. Seriously, Ruby is pretty darn slow at iterating
over each byte of a file. The I/O is reasonable, but the byte
iteration is terrible. You might get a small speedup by using
File#read instead of File#each_byte:

  while (buffer = f.read(BUF_SIZE))
    buffer.each_byte {|b| ... }
  end

I got about a 5% speedup using an 8K buffer.

You also may want to consider the idiom:

File.open(filename) do |f|
   ...
end

This will automatically close the file at the end of the block.

> def scramble(fname)
>     f = File.new(fname, "rb")
>     _fname = fname + ".scrambled"
>     begin
>         File.exist?(_fname) if File.delete(_fname)

You may want to double check the previous line.

>     rescue
>     end
>     ff = File.new(_fname, "wb+")
>     for l in f
>         l.each_byte{|c| ff.write((c | 0x80).chr) }

So you don't need to get the original file data back, right? If you
do, you may want to use xor instead, and if you don't, then why not
just write zeros?

>     end
>     f.close()
>     ff.close()
> end