I hereby claim:
- I am sergey-alekseev on github.
- I am sergeyalekseev (https://keybase.io/sergeyalekseev) on keybase.
- I have a public key whose fingerprint is 2D4B 460A 441B D5A9 F42E 97A9 781C 4863 C8D7 8D81
To claim this, I am signing this object:
I hereby claim:
To claim this, I am signing this object:
=========== [mysql2] Single column with unique index (1000 records) ============ | |
Warming up -------------------------------------- | |
validate_only_if_changed_by_default = true | |
2.014k i/100ms | |
validate_only_if_changed_by_default = false | |
227.000 i/100ms | |
Calculating ------------------------------------- | |
validate_only_if_changed_by_default = true | |
21.060k (± 3.1%) i/s - 106.742k in 5.073537s |
# this is a simple Ruby script written by https://github.com/sergey-alekseev | |
# to automate dummy "UP"s for adverts on the most popular local Belarusian | |
# online flea market – http://baraholka.onliner.by | |
# feel free to create a recurring task from the script | |
# using launchd on Mac or cron on Linux | |
begin | |
require "bundler/inline" | |
rescue LoadError => e | |
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" |
begin | |
require "bundler/inline" | |
rescue LoadError => e | |
$stderr.puts "Bundler version 1.10 or later is required. Please update your Bundler" | |
raise e | |
end | |
gemfile(true) do | |
source "https://rubygems.org" | |
gem "rails", github: "rails/rails" |
input { | |
# Read all documents from Elasticsearch matching the given query | |
elasticsearch { | |
hosts => "localhost" | |
index => "index_name" | |
query => '{"query":{"regexp":{"not_analyzed_field":".*"}}}' | |
} | |
} | |
output { |
When developing a program in Ruby, you may sometimes encounter a memory leak. For a while now, Ruby has a facility to gather information about what objects are laying around: ObjectSpace.
There are several approaches one can take to debug a leak. This discusses a time-based approach, where a full memory dump is generated every, say, 5 minutes, during a time that the memory leak is showing up. Afterwards, one can look at all the objects, and find out which ones are staying around, causing the
Benchmark.ips do |x| | |
x.report('merge') { {}.merge :a => 1 } | |
x.report('merge!') { {}.merge! :a => 1 } | |
x.compare! | |
end | |
Calculating ------------------------------------- | |
merge 34.220k i/100ms | |
merge! 33.039k i/100ms | |
------------------------------------------------- | |
merge 1.923M (±32.2%) i/s - 7.631M |
Benchmark.ips do |x| | |
x.report('exists?') { User.exists?(:id => 1) } | |
x.report('where-any?') { User.where(:id => 1).any? } | |
x.compare! | |
end | |
Comparison: | |
exists?: 636.0 i/s | |
where-any?: 567.1 i/s - 1.12x slower |
Benchmark.ips do |x| | |
x.report('exists?') { user.printers.exists? } | |
x.report('any?') { user.printers.any? } | |
x.compare! | |
end | |
Comparison: | |
any?: 615.6 i/s | |
exists?: 601.8 i/s - 1.02x slower |
Benchmark.ips do |x| | |
x.report('object comparison') { item.user == print.user } | |
x.report('id comparison') { item.user_id == print.user_id } | |
x.compare! | |
end | |
Calculating ------------------------------------- | |
object comparison 1.204k i/100ms | |
id comparison 1.972k i/100ms | |
------------------------------------------------- |