From 6ae136b50dde5ad2f1480908ccd2121a5dfebe3f Mon Sep 17 00:00:00 2001 From: Val Date: Thu, 12 Dec 2024 00:52:17 +0100 Subject: [PATCH] Task #1 solution --- task1.rb | 54 ++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 50 insertions(+), 4 deletions(-) diff --git a/task1.rb b/task1.rb index 5ccb590..03de364 100644 --- a/task1.rb +++ b/task1.rb @@ -1,3 +1,5 @@ +require 'parallel' + # Генерация файлов для примера files = 5.times.map do |i| filename = "file_#{i}.txt" @@ -14,8 +16,52 @@ def process_files_sequentially(files) end end -start_time = Time.now -process_files_sequentially(files) -end_time = Time.now +# puts in Parallel +def process_files_parallel(files) + Parallel.map(files, in_threads: 5) do |file| + File.open(file, 'r') do |f| + f.each_line { |line| puts line } + end + end +end + +# puts using threads +def process_files_threads(files) + ts = files.map do |file| + Thread.new do + File.open(file, 'r') do |f| + f.each_line { |line| puts line } + end + end + end + ts.each(&:join) +end + +def measure_sequentially(files) + start_time = Time.now + process_files_sequentially(files) + end_time = Time.now + end_time - start_time +end + +def measure_parallel(files) + start_time = Time.now + process_files_parallel(files) + end_time = Time.now + end_time - start_time +end + +def measure_threads(files) + start_time = Time.now + process_files_threads(files) + end_time = Time.now + end_time - start_time +end + +time_sequentially = measure_sequentially(files) +time_parallel = measure_parallel(files) +time_threads = measure_threads(files) -puts "Время выполнения Sequentially: #{end_time - start_time} секунд" # Время выполнения Sequentially: 2.596501 секунд \ No newline at end of file +puts "Время выполнения Sequentially: #{time_sequentially} секунд" +puts "Время выполнения Parallel: #{time_parallel} секунд" +puts "Время выполнения Concurrently: #{time_threads} секунд"