Ruby · Avançado · Inglês · Técnico
object shapes
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 formaExemplos
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