`each_byte.take` is going to be considerably faster on large strings since it doesn't have to instantiate the whole byte array:
```irb
>> def time; s = Time.now; yield; (Time.now - s) * 1000; end
 => :time
>> str = nil
 => nil
>> time{ str = 'a' * 500_000 }
 => 0.438
>> s.size
 => 500000
>> time{ str.bytes }
 => 10.83
>> time{ str.each_byte }
 => 0.005
>> time{ str.each_byte.take 4 }
 => 0.011
```

But `slice!` looks to be plenty fast:
```irb
>> time{ s.slice! 0, 23 }
 => 0.006
```