Skip to content
Open
Show file tree
Hide file tree
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
13 changes: 13 additions & 0 deletions .dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
node_modules
npm-debug.log
Dockerfile*
docker-compose*
.dockerignore
.git
.gitignore
.env
*/bin
*/obj
README.md
LICENSE
.vscode
56 changes: 56 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
*.gem
*.rbc
/.config
/coverage/
/InstalledFiles
/pkg/
/spec/reports/
/spec/examples.txt
/test/tmp/
/test/version_tmp/
/tmp/

# Used by dotenv library to load environment variables.
# .env

# Ignore Byebug command history file.
.byebug_history

## Specific to RubyMotion:
.dat*
.repl_history
build/
*.bridgesupport
build-iPhoneOS/
Copy link
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ого

build-iPhoneSimulator/

## Specific to RubyMotion (use of CocoaPods):
#
# We recommend against adding the Pods directory to your .gitignore. However
# you should judge for yourself, the pros and cons are mentioned at:
# https://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
#
# vendor/Pods/

## Documentation cache and generated files:
/.yardoc/
/_yardoc/
/doc/
/rdoc/

## Environment normalization:
/.bundle/
/vendor/bundle
/lib/bundler/man/

# for a library or gem, you might want to ignore these files since the code is
# intended to run in multiple environments; otherwise, check them in:
# Gemfile.lock
# .ruby-version
# .ruby-gemset

# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
.rvmrc
/.DS_Store
.ruby-version
/tmp
22 changes: 22 additions & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
FROM ruby:2.6

LABEL Name=ruby-optimization Version=0.0.1

WORKDIR /app
COPY . /app

RUN apt-get update && apt-get upgrade -y \
&& apt-get install -y g++ valgrind \
massif-visualizer --no-install-recommends \
&& apt-get purge --auto-remove -y curl \
&& rm -rf /var/lib/apt/lists/* \
&& rm -rf /src/*.deb

RUN gem install pry && gem install oj

RUN groupadd -r massif && useradd -r -g massif massif \
&& chown -R massif:massif /app

USER massif

ENTRYPOINT [ "/app/docker-entrypoint.sh" ]
29 changes: 29 additions & 0 deletions asymtotics.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
require './task-2'
# gem install benchmark-ips
# gem install kalibera
require 'benchmark/ips'

GC.disable

def cpu_benchmark
Benchmark.ips do |bench|
bench.warmup = 0
%w[0065 0125 025 05 1 2].each do |size|
bench.report("Process #{size}Mb") { work("data/data_large.#{size}.txt") }
end

bench.compare!
end
end

def memory_allocation
%w[0065 0125 025 05 1].each do |size|
before = `ps -o rss= -p #{Process.pid}`.to_i / 1024
work("data/data_large.#{size}.txt")
after = `ps -o rss= -p #{Process.pid}`.to_i / 1024
puts "Total memory for date_large.#{size}.txt: #{after - before} MB"
end
end

memory_allocation
cpu_benchmark
Loading