class RDF::Benchmark::Repository

Attributes

repository[RW]

@!attribute [rw] repository

@return [RDF::Repository] the repository to benchmark

Public Class Methods

new(generator: , repository:) click to toggle source

@param generator [#data] @param repository [RDF::Repository] the repository to benchmark

# File lib/rdf/benchmark/repository.rb, line 11
def initialize(generator: , repository:)
  @generator  = generator
  @repository = repository
end

Public Instance Methods

delete!(name: 'Repository click to toggle source

Benchmark {Repository#delete} for individual statements.

@param name [#to_s] the name to give the benchmark report @param preload [Integer] number of statements to preload into the

repository for delete

@param options [Hash<Symbol, Object>]

@see RDF::Benchmark#benchmark_ips

@return [Benchmark::IPS::Report] the report for the finished benchmark

# File lib/rdf/benchmark/repository.rb, line 51
def delete!(name: 'Repository#delete', preload: 1_000_000, **options)
  deletes = statements.lazy.take(preload)
  deletes.each { |st| repository.insert(st) }
  
  report = RDF::Benchmark.benchmark_ips!(name: name, **options) do
    repository.delete(deletes.next)
  end
  
  return report
ensure 
  repository.clear
end
delete_insert!(name: 'Repository click to toggle source

Benchmark {Repository#delete_insert} for individual statements.

@param name [#to_s] the name to give the benchmark report @param preload [Integer] number of statements to preload into the

repository for delete

@param options [Hash<Symbol, Object>]

@see RDF::Benchmark#benchmark_ips

@return [Benchmark::IPS::Report] the report for the finished benchmark

# File lib/rdf/benchmark/repository.rb, line 26
def delete_insert!(name:    'Repository#delete_insert', 
                   preload: 1_000_000, **options)
  inserts = statements.lazy
  deletes = inserts.take(preload)
  deletes.each { |st| repository.insert(st) }

  report = RDF::Benchmark.benchmark_ips!(name: name, **options) do
    repository.delete_insert(deletes.take(10), inserts.take(10))
  end

  return report
ensure 
  repository.clear
end
insert!(name: 'Repository click to toggle source

Benchmark {Repository#insert} for individual statements.

@param name [#to_s] @param options [Hash<Symbol, Object>]

@see RDF::Benchmark#benchmark_ips

@return [Benchmark::IPS::Report] the report for the finished benchmark

# File lib/rdf/benchmark/repository.rb, line 72
def insert!(name: 'Repository#insert', **options)
  inserts = statements.lazy

  report = RDF::Benchmark.benchmark_ips!(name: name, **options) do
    repository.insert(inserts.next)
  end
  
  return report
ensure 
  repository.clear
end
statements() click to toggle source

@return [RDF::Enumerator]

# File lib/rdf/benchmark/repository.rb, line 86
def statements
  @generator.data.each_statement
end