Encontre e substitua o hash específico e seus valores na matriz

Qual é o método mais eficiente para encontrar hash específico na matriz e substituir seus valores no local, para que a matriz também seja alterada?

Eu tenho esse código até agora, mas em um aplicativo do mundo real com muitos dados, isso se torna a parte mais lenta do aplicativo, o que provavelmente vaza memória, pois a memória ilimitada cresce constantemente quando eu executo essa operação em cada mensagem do websocket.

array = 
  [ 
    { id: 1,
      parameters: {
        omg: "lol"
     },
     options: {
         lol: "omg"
      }
    },
    { id: 2,
      parameters: {
        omg: "double lol"
      },
      options: {
        lol: "double omg"
      }
    }
  ]

selection = array.select { |a| a[:id] == 1 }[0]
selection[:parameters][:omg] = "triple omg"
p array
# => [{:id=>1, :parameters=>{:omg=>"triple omg"}, :options=>{:lol=>"omg"}}, {:id=>2, :parameters=>{:omg=>"double lol"}, :options=>{:lol=>"double omg"}}]