1

XMLファイルをRubyとNokogiriでパースしているのですが、実行時間に問題があります。4000 行で 1 分かかります。長すぎます。コードを最適化するためのアイデアを見つけようとしています。

これはコードの例です:

input = Nokogiri::XML(File.open(file_name))
input.xpath('//Transition').each do |transition_record|
  from = transition_record.xpath('@From')
  to = transition_record.xpath('@To')
  name = transition_record.xpath('@Name')
  Transition.create do |transition|
    transition.from_id = from.to_s
    transition.to_id = to.to_s
    transition.name = name.to_s

    if transition_record.at_xpath('Condition').at_xpath('@Type')
      transition.condition = transition_record.at_xpath('Condition').at_xpath('@Type').to_s
    end
  end
end

TransitionXML 内の固定された場所ではなく、任意のレベルにある可能性があります。また、何らかの方法で他の 3 つのタグを解析しています。

どうすれば改善できるか、誰にもアイデアはありますか?

4

1 に答える 1

0

Nokogiri を使用してハッシュの配列を作成するようにコードを再編成すると、それらを で直接使用できますcreate。これにより、各部分を別々に時間を計ることができます。ノコギリが問題ではないことがわかると思います。

于 2012-11-21T22:08:20.417 に答える