This commit is contained in:
46
docs/snippets/ruby/benchmarking/simple_benchmark.rb
Normal file
46
docs/snippets/ruby/benchmarking/simple_benchmark.rb
Normal file
@@ -0,0 +1,46 @@
|
||||
```ruby title="simple_benchmark.rb"
|
||||
require 'kreuzberg'
|
||||
require 'benchmark'
|
||||
|
||||
config = Kreuzberg::ExtractionConfig.new(use_cache: false)
|
||||
kreuzberg = Kreuzberg::Client.new(config)
|
||||
file_path = 'document.pdf'
|
||||
num_runs = 10
|
||||
|
||||
puts "Sync extraction (#{num_runs} runs):"
|
||||
sync_time = Benchmark.realtime do
|
||||
num_runs.times do
|
||||
kreuzberg.extract_file(file_path)
|
||||
end
|
||||
end
|
||||
avg_sync = sync_time / num_runs
|
||||
puts " - Total time: #{sync_time.round(3)}s"
|
||||
puts " - Average: #{avg_sync.round(3)}s per extraction"
|
||||
|
||||
puts "\nAsync extraction (#{num_runs} parallel runs):"
|
||||
async_time = Benchmark.realtime do
|
||||
threads = num_runs.times.map do
|
||||
Thread.new { kreuzberg.extract_file(file_path) }
|
||||
end
|
||||
threads.map(&:join)
|
||||
end
|
||||
puts " - Total time: #{async_time.round(3)}s"
|
||||
puts " - Average: #{(async_time / num_runs).round(3)}s per extraction"
|
||||
puts " - Speedup: #{(sync_time / async_time).round(1)}x"
|
||||
|
||||
cache_config = Kreuzberg::ExtractionConfig.new(use_cache: true)
|
||||
kreuzberg_cached = Kreuzberg::Client.new(cache_config)
|
||||
|
||||
puts "\nFirst extraction (populates cache)..."
|
||||
first_time = Benchmark.realtime do
|
||||
kreuzberg_cached.extract_file(file_path)
|
||||
end
|
||||
puts " - Time: #{first_time.round(3)}s"
|
||||
|
||||
puts "Second extraction (from cache)..."
|
||||
cached_time = Benchmark.realtime do
|
||||
kreuzberg_cached.extract_file(file_path)
|
||||
end
|
||||
puts " - Time: #{cached_time.round(3)}s"
|
||||
puts " - Cache speedup: #{(first_time / cached_time).round(1)}x"
|
||||
```
|
||||
Reference in New Issue
Block a user