Skip to content

Instantly share code, notes, and snippets.

require 'benchmark/ips'
Benchmark.ips do |x|
x.config(time: 60, warmup: 5)
x.config(stats: :bootstrap, confidence: 95)
x.report('binstub') { `bin/rspec -v`}
x.report('bundle exec') {`bundle exec rspec -v `}
x.report('direct') {`rspec -v `}
end
@fcheung
fcheung / results
Created July 27, 2019 14:03
unpack cookie benchmark
require 'benchmark/ips'
def reverse(session_data)
digest, session_data = session_data.reverse.split('--', 2)
digest.reverse! if digest
session_data.reverse! if session_data
[session_data, digest]
end
def index(session_data)
@fcheung
fcheung / get_mem.rb
Created July 5, 2019 22:13
get_process_mem
require 'ffi'
require 'get_process_mem'
require 'benchmark/ips'
module MemoryInfo
extend FFI::Library
ffi_lib 'c'
attach_function :mach_task_self, [], :__darwin_mach_port_t
attach_function :task_info,
[
@fcheung
fcheung / notes.md
Created November 27, 2017 16:28
changes observed from ruby mongo 1.x to 2.x

#Updating from mongo ruby drive 1.x to 2.x

We've recently been belatedly migrating to the 2.x series of the mongo ruby driver. At least in part this is because there's very little documentation out there on what has changed, except that there is no backwards compatibility. This post is a list of issues that we came across - I expect it is by no means exhaustive

Dependencies

Before you get started, make sure that any dependencies you have are also comaptible with mongo 2.x. For example database_cleaner needs to be 1.5 or higher

source 'https://rubygems.org'
gem 'rails', '~> 4.2.7.1'
gem 'devise', '~> 3.5.0'
gem 'rspec-rails', '~> 3.4.0'

Keybase proof

I hereby claim:

  • I am fcheung on github.
  • I am frederickcheung (https://keybase.io/frederickcheung) on keybase.
  • I have a public key whose fingerprint is 9A1B 5755 1E45 1BAE 41D4 8905 C4CD 3D1E B871 B631

To claim this, I am signing this object:

@fcheung
fcheung / tr_tree.rb
Created October 15, 2015 19:52 — forked from gagaception/tr_tree.rb
tr_tree
class Tree
attr_accessor :payload, :children
def initialize(payload, children = [])
@payload = payload
@children = children
end
def traverse(&block)
yield self
@children.each {|child| child.traverse(&block)}
@fcheung
fcheung / gist:4072448
Created November 14, 2012 14:32
BritRuby proposal

Going Native

We all love ruby, but sometimes ruby is not enough. Whether it be a performance bottleneck, a killer library written in C or some platform specific functionality you just have to have, sometimes you need to drop down a level.

There have been many talks that show how to take the first steps in writing a ruby C extension. This isn't one of them. I propose instead to give an overview of different ways of extending ruby and show what each approach brings to the table. I intend to cover 'classic' C extensions, RubyInline and FFI across a range of ruby implementations.

About me

class Image
attr_accessor :data
def initialize (data)
@data = data
end
def image_blur
changes = []
@data.each_with_index do |row, row_index|
@fcheung
fcheung / cl1.rb
Created September 17, 2015 19:53 — forked from gagaception/challenge#1.rb
cl1.rb
class Image
attr_accessor :data
def initialize (data)
@data = data
end
def output
@data.each do |sub|
sub.each do |cell|
print cell