Pular para o conteúdo principal

Postagens

Mostrando postagens de Maio, 2012

Hash vs OrderedHash

Seria o OrderedHash menos eficiente que o Hash?
Contextualizando: Algumas vezes queremos que um dicionário (ou tabela de símbolos) tenha não apenas uma relação de chave e objeto como também uma ordem (a palavra dicionário aliás remete bem a ideia de chaves ordenadas, cada qual com uma definição relacionada).  O ActiveSupport do Rails oferece uma classe chamada OrderedHash para honrar a especificação do YAML que exige a implementação de um mapa ordenado (omap). Quais os riscos de usar o ActiveSupport::OrderedHash em outros contextos?

Para responder a questão vou utilizar de dois recursos. Um simples teste de performance e o código-fonte do OrderedHash.


require 'benchmark' require 'active_support' TIMES= 100000 a = [] Benchmark.bm do |bm| bm.report("Hash") do TIMES.times { |i| a = {} a[:a] = 1 a[:b] = 2 } end bm.report("Ordered Hash") do TIMES.times { |i| a = ActiveSupport::OrderedHash.new a[:a] = 1 …