Sha256: ddbaa8f84778cab18b2d7a8bb7eecbc7caf95a3962e2c0b5e56d6d75bed5e3f7

Contents?: true

Size: 1.62 KB

Versions: 1

Compression:

Stored size: 1.62 KB

Contents

# 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

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_cached_resource-0.1.0 lib/activeresource/examples/performance.rb