# frozen_string_literal: true require "rubygems" require_relative "../lib/active_resource" require "benchmark" TIMES = (ENV["N"] || 10_000).to_i # deep nested resource attrs = { id: 1, name: "Luis", age: 21, friends: [ { name: "JK", age: 24, colors: ["red", "green", "blue"], brothers: [ { name: "Mateo", age: 35, children: [{ name: "Edith", age: 5 }, { name: "Martha", age: 4 }] }, { name: "Felipe", age: 33, children: [{ name: "Bryan", age: 1 }, { name: "Luke", age: 0 }] } ] }, { name: "Eduardo", age: 20, colors: [], brothers: [ { name: "Sebas", age: 23, children: [{ name: "Andres", age: 0 }, { name: "Jorge", age: 2 }] }, { name: "Elsa", age: 19, children: [{ name: "Natacha", age: 1 }] }, { name: "Milena", age: 16, children: [] } ] } ] } class Customer < ActiveResource::Base self.site = "http://37s.sunrise.i:3000" end module Nested class Customer < ActiveResource::Base self.site = "http://37s.sunrise.i:3000" end end Benchmark.bm(40) do |x| x.report("Model.new (instantiation)") { TIMES.times { Customer.new } } x.report("Nested::Model.new (instantiation)") { TIMES.times { Nested::Customer.new } } x.report("Model.new (setting attributes)") { TIMES.times { Customer.new attrs } } x.report("Nested::Model.new (setting attributes)") { TIMES.times { Nested::Customer.new attrs } } end