Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
54 changes: 50 additions & 4 deletions task1.rb
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
require 'parallel'

# Генерация файлов для примера
files = 5.times.map do |i|
filename = "file_#{i}.txt"
Expand All @@ -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 секунд
puts "Время выполнения Sequentially: #{time_sequentially} секунд"
puts "Время выполнения Parallel: #{time_parallel} секунд"
puts "Время выполнения Concurrently: #{time_threads} секунд"