Guest User

Untitled

a guest
Apr 25th, 2018
102
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.73 KB | None | 0 0
  1. require 'rubygems'
  2. require 'nokogiri'
  3. require 'benchmark'
  4.  
  5. puts Nokogiri.uses_libxml?
  6.  
  7. orig_doc = Nokogiri::XML::Document.new
  8. root = Nokogiri::XML::Node.new "employees", orig_doc
  9. orig_doc.root = root
  10.  
  11. ["Margareth", "John", "Aaron", "Mike", "Sergio"].each do |name|
  12. [22, 25, 28, 31, 34].each do |age|
  13. ["programmer", "manager", "nothing, actually"].each do |job|
  14. employee_node = Nokogiri::XML::Node.new "employee", orig_doc
  15. name_node = Nokogiri::XML::Node.new "name", orig_doc
  16. name_node.content = name
  17. age_node = Nokogiri::XML::Node.new "age", orig_doc
  18. age_node.content = age
  19. job_node = Nokogiri::XML::Node.new "job", orig_doc
  20. job_node.content = job
  21. employee_node << name_node
  22. employee_node << age_node
  23. employee_node << job_node
  24. root << employee_node
  25. end
  26. end
  27. end
  28. doc1 = orig_doc.dup(1)
  29. doc2 = orig_doc.dup(1)
  30.  
  31. office = Nokogiri::XML::Node.new "office", doc1
  32. state = Nokogiri::XML::Node.new "state", doc1
  33. state.content = "Some state"
  34. office << state
  35. other_data = Nokogiri::XML::Node.new "other_data", doc2
  36.  
  37. frag1 = Nokogiri::XML::DocumentFragment.new doc1
  38. frag1 << office
  39. frag1 << other_data
  40.  
  41. office = Nokogiri::XML::Node.new "office", doc2
  42. state = Nokogiri::XML::Node.new "state", doc2
  43. state.content = "Some state"
  44. office << state
  45. other_data = Nokogiri::XML::Node.new "other_data", doc2
  46.  
  47. Benchmark.bm do |b|
  48.  
  49. b.report "with fragment" do
  50. 500.times do
  51. doc = doc1.dup(1)
  52. doc.search('//employee').each do |node|
  53. node << frag1.dup(1)
  54. end
  55. end
  56. end
  57.  
  58. b.report "without fragment" do
  59. 500.times do
  60. doc = doc1.dup(1)
  61. doc.search('//employee').each do |node|
  62. node << office.dup(1)
  63. node << other_data.dup(1)
  64. end
  65. end
  66. end
  67. end
Add Comment
Please, Sign In to add comment