Цитата Сообщение от Рыб Посмотреть сообщение
строка Foo#{i} создает объект-строку и помещает ее кучу
Не совсем. Где ruby возьмет значение этой строки -- при компиляции оно еще не известно, в нем есть переменная i? Соответственно, при исполнении в некотором буфере будет размещен префикс "Foo", затем для i будет вызван to_s и произведена конкатенация. Но в этом варианте не обязательно будет использована куча. Вполне может быть задействован статический временный буфер.

Т.е. операций все равно будет три, но выполняться они будут чуть иначе. И, как оказалось, чуть быстрее.