ExpertiDict

Ruby · Avançado · Inglês · Técnico

object shapes

/ˈɑbdʒɛkt ʃeɪps/substantivo

Otimização do CRuby 3.2 em que objetos que definem as mesmas variáveis de instância na mesma ordem compartilham uma forma (shape) interna, acelerando o acesso e economizando memória.

Onde usar

Aparece em conversas sobre desempenho do YJIT e do CRuby: inicializar sempre as mesmas @variáveis, na mesma ordem, no initialize, ajuda a manter poucos shapes.

Em código

class Ponto
  def initialize(x, y)
    @x = x
    @y = y
  end
end
Ponto.new(1, 2)  # mesma forma: @x, @y
Ponto.new(3, 4)  # reaproveita a forma

Exemplos

Initialize the ivars in the same order for stable shapes.

Inicialize as ivars sempre na mesma ordem para shapes estáveis.

Object shapes made instance variable access faster.

Os object shapes aceleraram o acesso a variáveis de instância.

Cuidado

Definir variáveis de instância em ordens diferentes ou de forma condicional gera formas distintas e reduz o ganho; não é algo que se programe diretamente.

Sinônimos

shapes

Veja também

Todos os termos de Ruby