The current bytes calculation is inefficient, because every time it instantiate a Fixnum (1024) and generates a lot of method calls.
Example: if I call 16.gigabytes it internally invokes megabyte and kilobyte, instantiating three times 1024.
The number of internal calls and Fixnum instantiation is proportional to the order of magnitude of the called method: exabytes is more expensive than kilobytes.
I created a benchmark to compare the efficiency of the actual implementation, compared with my proposal: http://gist.github.com/129191
This is the link to the LH ticket: http://bit.ly/hpLcQ