Sha256: 6d67a54b7bff96404e315107f08570d226a6182e5d70a3b0f66a5fe141e51d24

Contents?: true

Size: 1.33 KB

Versions: 28

Compression:

Stored size: 1.33 KB

Contents

# frozen_string_literal: true
require_relative "./benchmarking_support"
require_relative "./app"
require_relative "./setup"

class AuthorFastSerializer < Panko::Serializer
  attributes :id, :name
end


class PostFastSerializer < Panko::Serializer
  attributes :id, :body, :title, :author_id
end

class PostWithHasOneFastSerializer < Panko::Serializer
  attributes :id, :body, :title, :author_id

  has_one :author, serializer: AuthorFastSerializer
end

class AuthorWithHasManyFastSerializer < Panko::Serializer
  attributes :id, :name

  has_many :posts, serializer: PostFastSerializer
end


def benchmark(prefix, serializer, options = {})
  data = Benchmark.data
  posts = data[:all]
  posts_50 = data[:small]

  merged_options = options.merge(each_serializer: serializer)

  Benchmark.run("Panko_ActiveRecord_#{prefix}_Posts_#{posts.count}") do
    Panko::ArraySerializer.new(posts, merged_options).to_a
  end

  data = Benchmark.data
  posts = data[:all]
  posts_50 = data[:small]

  Benchmark.run("Panko_ActiveRecord_#{prefix}_Posts_50") do
    Panko::ArraySerializer.new(posts_50, merged_options).to_a
  end
end

benchmark "Simple", PostFastSerializer
benchmark "HasOne", PostWithHasOneFastSerializer
benchmark "Except", PostWithHasOneFastSerializer, except: [:title]
benchmark "Only", PostWithHasOneFastSerializer, only: [:id, :body, :author_id, :author]

Version data entries

28 entries across 28 versions & 1 rubygems

Version Path
panko_serializer-0.7.7 benchmarks/bm_panko_object.rb
panko_serializer-0.7.6 benchmarks/bm_panko_object.rb
panko_serializer-0.7.5 benchmarks/bm_panko_object.rb
panko_serializer-0.7.4 benchmarks/bm_panko_object.rb
panko_serializer-0.7.3 benchmarks/bm_panko_object.rb
panko_serializer-0.7.2 benchmarks/bm_panko_object.rb
panko_serializer-0.7.1 benchmarks/bm_panko_object.rb
panko_serializer-0.7.0 benchmarks/bm_panko_object.rb
panko_serializer-0.6.0 benchmarks/bm_panko_object.rb
panko_serializer-0.5.10 benchmarks/bm_panko_object.rb
panko_serializer-0.5.9 benchmarks/bm_panko_object.rb
panko_serializer-0.5.8 benchmarks/bm_panko_object.rb
panko_serializer-0.5.7 benchmarks/bm_panko_object.rb
panko_serializer-0.5.6 benchmarks/bm_panko_object.rb
panko_serializer-0.5.5 benchmarks/bm_panko_object.rb
panko_serializer-0.5.4 benchmarks/bm_panko_object.rb
panko_serializer-0.5.3 benchmarks/bm_panko_object.rb
panko_serializer-0.5.2 benchmarks/bm_panko_object.rb
panko_serializer-0.5.1 benchmarks/bm_panko_object.rb
panko_serializer-0.5.0 benchmarks/bm_panko_object.rb