Initial commit

This commit is contained in:
Yaser
2026-08-13 19:50:53 +03:30
commit 38084458fe
879 changed files with 95198 additions and 0 deletions

140
lib/tasks/bench.rake Normal file
View File

@@ -0,0 +1,140 @@
# frozen_string_literal: true
# TODO: Add descriptions.
# TODO: Don't sleep in case of last bench.
# TODO: Remove legacy benchmarks.
namespace :bench do
namespace :matching do
desc 'Matching with amqp messages'
task :amqp, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/matching.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
matching = Bench::Matching::AMQP.new(config)
matching.run!
memo << matching
matching.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each {|b| Kernel.pp b.result}
end
desc 'Matching without amqp messages'
task :direct, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/matching.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
matching = Bench::Matching::Direct.new(config)
matching.run!
memo << matching
matching.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each {|b| Kernel.pp b.result}
end
end
namespace :trade_execution do
desc 'Trade Execution with amqp messages'
task :amqp, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/trade_execution.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
trade_execution = ::Bench::TradeExecution::AMQP.new(config)
trade_execution.run!
memo << trade_execution
trade_execution.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each {|b| Kernel.pp b.result}
end
desc 'Trade execution without amqp messages'
task :direct, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/trade_execution.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
trade_execution = ::Bench::TradeExecution::Direct.new(config)
trade_execution.run!
memo << trade_execution
trade_execution.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each {|b| Kernel.pp b.result}
end
end
namespace :order_processing do
desc 'Order Processing with amqp messages'
task :amqp, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/order_processing.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
order_processing = ::Bench::OrderProcessing::AMQP.new(config)
order_processing.run!
memo << order_processing
order_processing.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each {|b| Kernel.pp b.result}
end
desc 'Order Processing without amqp messages'
task :direct, [:config_load_path] => [:environment] do |_t, args|
args.with_defaults(:config_load_path => 'config/bench/order_processing.yml')
benches =
YAML.load_file(Rails.root.join(args[:config_load_path]))
.map(&:deep_symbolize_keys)
.each_with_object([]) do |config, memo|
Kernel.pp config
order_processing = Bench::OrderProcessing::Direct.new(config)
order_processing.run!
memo << order_processing
order_processing.save_report
Kernel.puts "Sleep before next bench"
sleep 5
end
benches.each { |b| Kernel.pp b.result }
end
end
end