Skip to content

Instantly share code, notes, and snippets.

View tenderlove's full-sized avatar
©️
 ​[object Object] :trollface:

Aaron Patterson tenderlove

©️
 ​[object Object] :trollface:
View GitHub Profile
$ make benchmark ITEM=vm_call
/Users/aaron/.rubies/arm64/ruby-trunk/bin/ruby --disable=gems -rrubygems -I./benchmark/lib ./benchmark/benchmark-driver/exe/benchmark-driver \
--executables="compare-ruby::/Users/aaron/.rubies/arm64/ruby-trunk/bin/ruby --disable=gems -I.ext/common --disable-gem" \
--executables="built-ruby::./miniruby -I./lib -I. -I.ext/common ./tool/runruby.rb --extout=.ext -- --disable-gems --disable-gem" \
--output=markdown --output-compare -v $(find ./benchmark -maxdepth 1 -name 'vm_call' -o -name '*vm_call*.yml' -o -name '*vm_call*.rb' | sort)
compare-ruby: ruby 3.4.0dev (2024-04-12T17:49:17Z master 1521af3259) [arm64-darwin23]
built-ruby: ruby 3.4.0dev (2024-04-12T19:48:34Z speed-forward 0265c020ed) [arm64-darwin23]
warming up........
# Iteration per second (i/s)
module RBTree
module M
def insert val
RBTree.insert self, val
end
alias :<< :insert
def include?(...) = key?(...)
end
class Leaf
@tenderlove
tenderlove / mdns.rb
Created November 19, 2023 20:02
Sample mDNS client in Ruby
# mDNS client
#
# Usage: ruby script.rb "_http._tcp.local."
require "socket"
require "ipaddr"
require "fcntl"
require "resolv"
module DNSSD
#!/Users/aaron/.rubies/arm64/ruby-trunk/bin/ruby
# Configure Vim (using vim-lsp) like this where `ls.rb` is this script:
#
# if executable('./ls.rb')
# au User lsp_setup call lsp#register_server({
# \ 'name': 'ls.rb',
# \ 'cmd': ['./ls.rb'],
# \ 'allowlist': ['ruby'],
# \ })
@tenderlove
tenderlove / test.rb
Last active September 27, 2023 16:00
require "strscan"
class Lexer
IDENTIFIER = /[_A-Za-z][_0-9A-Za-z]*\b/
IGNORE = %r{
(?:
[, \c\r\n\t]+ |
\#.*$
)*
}x
profiler = Thread.new do
while true
p Thread.main.backtrace
sleep 0.5
end
end
def slow_function
sleep 2
end
#!/Users/aaron/.rubies/arm64/ruby-trunk/bin/ruby
# Configure Vim (using vim-lsp) like this where `ls.rb` is this script:
#
# if executable('./ls.rb')
# au User lsp_setup call lsp#register_server({
# \ 'name': 'ls.rb',
# \ 'cmd': ['./ls.rb'],
# \ 'allowlist': ['ruby'],
# \ })
#!/Users/aaron/.rubies/arm64/ruby-trunk/bin/ruby
# This is a demo language server for Ruby, written in Ruby. It just checks
# the syntax of Ruby programs when you save them.
#
# Configure this in Vim by adding the vim-lsp plugin, then doing this
# in your vimrc:
#
# au User lsp_setup
# \ lsp#register_server({
require "benchmark/ips"
require "graphql/language/lexer"
require "graphql/language/token"
require "graphql/language/block_string"
schema = DATA.read
Benchmark.ips { |x|
x.report("graphql") { GraphQL::Language::Lexer.tokenize(schema) }
}
# Okasaki style Functional Red Black Tree
# https://www.cs.tufts.edu/comp/150FP/archive/chris-okasaki/redblack99.pdf
#
# leaves and root are black
# BST
# No red node has a red child
# Every path from the root to a leaf has the same number of black nodes
module RBTree
class Leaf