mirror of
https://codeberg.org/redict/redict.git
synced 2025-01-26 01:48:27 -05:00
72 lines
1.4 KiB
Ruby
72 lines
1.4 KiB
Ruby
|
BENCHMARK_ROOT = File.dirname(__FILE__)
|
||
|
REDIS_ROOT = File.join(BENCHMARK_ROOT, "..", "lib")
|
||
|
|
||
|
$: << REDIS_ROOT
|
||
|
require 'redis'
|
||
|
require 'benchmark'
|
||
|
|
||
|
def show_usage
|
||
|
puts <<-EOL
|
||
|
Usage: worker.rb [read:write] <start_index> <end_index> <sleep_msec>
|
||
|
EOL
|
||
|
end
|
||
|
|
||
|
def shift_from_argv
|
||
|
value = ARGV.shift
|
||
|
unless value
|
||
|
show_usage
|
||
|
exit -1
|
||
|
end
|
||
|
value
|
||
|
end
|
||
|
|
||
|
operation = shift_from_argv.to_sym
|
||
|
start_index = shift_from_argv.to_i
|
||
|
end_index = shift_from_argv.to_i
|
||
|
sleep_msec = shift_from_argv.to_i
|
||
|
sleep_duration = sleep_msec/1000.0
|
||
|
|
||
|
redis = Redis.new
|
||
|
|
||
|
case operation
|
||
|
when :initialize
|
||
|
|
||
|
start_index.upto(end_index) do |i|
|
||
|
redis[i] = 0
|
||
|
end
|
||
|
|
||
|
when :clear
|
||
|
|
||
|
start_index.upto(end_index) do |i|
|
||
|
redis.delete(i)
|
||
|
end
|
||
|
|
||
|
when :read, :write
|
||
|
|
||
|
puts "Starting to #{operation} at segment #{end_index + 1}"
|
||
|
|
||
|
loop do
|
||
|
t1 = Time.now
|
||
|
start_index.upto(end_index) do |i|
|
||
|
case operation
|
||
|
when :read
|
||
|
redis.get(i)
|
||
|
when :write
|
||
|
redis.incr(i)
|
||
|
else
|
||
|
raise "Unknown operation: #{operation}"
|
||
|
end
|
||
|
sleep sleep_duration
|
||
|
end
|
||
|
t2 = Time.now
|
||
|
|
||
|
requests_processed = end_index - start_index
|
||
|
time = t2 - t1
|
||
|
puts "#{t2.strftime("%H:%M")} [segment #{end_index + 1}] : Processed #{requests_processed} requests in #{time} seconds - #{(requests_processed/time).round} requests/sec"
|
||
|
end
|
||
|
|
||
|
else
|
||
|
raise "Unknown operation: #{operation}"
|
||
|
end
|
||
|
|