Welcome, guest! Login / Register - Why register?
Psst.. new poll here.
Psst.. new forums here.
Microsoft is blocking us again (TY IP Reputation!) so dont bother with any of their useless mail servers here and just use oauth login instead. Thank the nice Russians for causing that. :)

Paste

Pasted as Ruby by yobatest2 ( 16 years ago )
def timer m
  t0 = Time.now
  yield
  puts "#{m}#{Time.now - t0}"
  GC.start
end

a = []
timer("array / list:\n1m inserts: ") {1000000.times {|i| a << i}}
timer("another 5m inserts: ") {5000000.times {|i| a << i}}

a = []
timer("functional (i**2) 4m-array generation: ") {Array.new(4000000) {|i| i**2}}
timer("6m assigns: ") {6000000.times {|i| a[i] = i}}
timer("6m gets: ") {6000000.times {|i| a[i]}}

a = a[0...2000000]
timer("for 2m-array:\nrandom shuffle: ") {a.shuffle!}
timer("sort by results of (i % 1000): ") {a.sort_by {|i| i % 1000}}
timer("find all elements satisfy (i % 1000 == 0): ")  {a.find_all {|i| i % 1000 == 0}}
timer("simple sort: ") {a.sort!}

h = {}
timer("hash / dict:\n2m assigns: ") {2000000.times {|i| h[i] = i**2}}
timer("2m gets: ") {2000000.times {|i| h[i]}}
timer("1m gets +1m failgets: ") {(-1000000...1000000).each {|i| h[i]}}

s, ss = "yoba", ""
timer("eval expression 100k times: ") {100000.times {eval 's + ss'}}

timer("1m string products: ") {1000000.times {s*100}}
timer("1m concatenations: ") {1000000.times {ss << s}}
timer("1m slices (range): ") {1000000.times {|i| ss[i...i+4]}}
timer("1m slices (length): ") {1000000.times {|i| ss[i, 4]}}

class A
  attr_accessor :x
end
a = A.new
timer("10m times set instance variable: ") {10_000000.times {|i| a.x = i}}
timer("10m times get instance variable: ") {10_000000.times {|i| a.x}}

def yoba(n=0)
  begin;  yoba(n+1)
  rescue SystemStackError; n  end
end
puts "recursive calls:\nstack len: #{$stack_len = yoba - 1}"
timer("recurse until totally 5m recursions done: ") {n = 0; n = yoba n while n < 5000000}

def yoba_optimized(n=0)
  n % $stack_len == 0 ? (n+1) : (yoba_optimized n+1)
end
timer("recurse until totally 5m recursions done (optimized): ") {n = 0; n = yoba_optimized n while n < 5000000}

 

Revise this Paste

Your Name: Code Language: