From 0d0e7a7cb0baa743cad5f865be50643d3c8d11ef Mon Sep 17 00:00:00 2001 From: Sami Samhuri Date: Tue, 24 Jun 2025 10:01:18 -0400 Subject: [PATCH] Add benchmark script --- benchmark_parallel.rb | 54 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 benchmark_parallel.rb diff --git a/benchmark_parallel.rb b/benchmark_parallel.rb new file mode 100755 index 0000000..5aa3b56 --- /dev/null +++ b/benchmark_parallel.rb @@ -0,0 +1,54 @@ +#!/usr/bin/env ruby + +require 'fileutils' + +# Test with a small subset +test_sizes = [1, 2, 4, 8] +test_model = ARGV[0] || 'moondream:1.8b' + +puts "Benchmarking parallelism with model: #{test_model}" +puts "This will resize some test images and run quick tests" +puts "=" * 60 + +# Create test images if needed +unless Dir.exist?('photo-512') + puts "Creating test images..." + system('./resize_images.rb') +end + +# Run tests with different parallelism levels +results = {} + +test_sizes.each do |parallel| + puts "\nTesting with #{parallel} parallel requests..." + + start_time = Time.now + + # Run with just one prompt and limited images + success = system( + "./extract_tags.rb -p #{parallel} -m #{test_model} -v" + out: File::NULL, + err: File::NULL + ) + + elapsed = Time.now - start_time + results[parallel] = elapsed + + puts " Time: #{elapsed.round(1)}s" + + # Clean up results between runs + FileUtils.rm_rf('results') +end + +puts "\n" + "=" * 60 +puts "RESULTS:" +puts "=" * 60 + +baseline = results[1] +results.each do |parallel, time| + speedup = baseline / time + puts "#{parallel} parallel: #{time.round(1)}s (#{speedup.round(2)}x speedup)" +end + +optimal = results.min_by { |_, time| time } +puts "\nOptimal parallelism: #{optimal[0]} (#{optimal[1].round(1)}s)"