def foo(*arg) p arg end foo(1) # -> [1] foo(1, 2, 3) # -> [1, 2, 3] このような可変引数の配列は、mrubyの実装ではRITE VMの命令OP_ENTER中で作られます。つまり、可変引数を使うとメソッドコールの度に配列のアロケーションが行われるわけです。メソッドコールの数が多ければGCも頻発することでしょう。 可変引数の使用頻度が少なければ問題ないのですが、ループを構成してメソッドコールが頻発するmrblib/enum.rbで定義されているEnumerableモジュールのメソッドは軒並み使われています。たとえば、all?の定義です。 def all?(&block) if block self.each{|*val| unless block.call(*val) return false end } else self.e