Skip to content

Instantly share code, notes, and snippets.

@bernEsp
Last active August 29, 2015 14:06
Show Gist options
  • Save bernEsp/2ad9d71548c5883289c7 to your computer and use it in GitHub Desktop.
Save bernEsp/2ad9d71548c5883289c7 to your computer and use it in GitHub Desktop.
First version 3 loops / every one populate one column
r = Peasant.new(1233, 3000)
r2 = Peasant.new(1344718,9539271)
r3 = Peasant.new(2345642233123, 1234567890987)
Benchmark.bm do |x|
x.report("4dig: "){ r.multiply }
x.report("7dig: "){ r2.multiply }
x.report("13dig: ") {r3.multiply}
end
user system total real
4dig: 0.000000 0.000000 0.000000 ( 0.000053)
7dig: 0.000000 0.000000 0.000000 ( 0.000057)
13dig: 0.000000 0.000000 0.000000 ( 0.000127)
user system total real
4dig: 0.000000 0.000000 0.000000 ( 0.000054)
7dig: 0.000000 0.000000 0.000000 ( 0.000046)
13dig: 0.000000 0.000000 0.000000 ( 0.000093)
user system total real
4dig: 0.000000 0.000000 0.000000 ( 0.000085)
7dig: 0.000000 0.000000 0.000000 ( 0.000054)
13dig: 0.000000 0.000000 0.000000 ( 0.000164)
Second version reducing loops
reference values
r = Peasant.new(1234567890987654321, 1098765432123456789)
r2 = Peasant.new(123456789098765432123456789, 909876543212345678909876543)
n= 5000
Benchmark.bm do |x|
x.report("19dnew:"){ for i in 1..n; r = Peasant.new(1234567890987654321, 1098765432123456789); r.multiply; end}
x.report("27dnew:"){ for i in 1..n; r2 = Peasant.new(123456789098765432123456789, 909876543212345678909876543); r2.multiply; end}
x.report("19dold:"){ for i in 1..n; rold = Peasant.new(1234567890987654321, 1098765432123456789); rold.multiply_old; end}
x.report("27dold:"){ for i in 1..n; r2old = Peasant.new(123456789098765432123456789, 909876543212345678909876543); r2old.multiply_old; end}
end
user system total real
19dnew: 0.230000 0.000000 0.230000 ( 0.236329)
27dnew: 0.370000 0.000000 0.370000 ( 0.371231)
19dold: 0.230000 0.000000 0.230000 ( 0.225444)
27dold: 0.390000 0.000000 0.390000 ( 0.399403)
** complete comparison **
##### v1 = first approach
##### old = reducing loop
##### multiply = last approach
n= 5000
Benchmark.bm do |x|
x.report("19dnew:"){ for i in 1..n; r = Peasant.new(1234567890987654321, 1098765432123456789); r.multiply; end}
x.report("27dnew:"){ for i in 1..n; r2 = Peasant.new(123456789098765432123456789, 909876543212345678909876543); r2.multiply; end}
x.report("19dold:"){ for i in 1..n; rold = Peasant.new(1234567890987654321, 1098765432123456789); rold.multiply_old; end}
x.report("27dold:"){ for i in 1..n; r2old = Peasant.new(123456789098765432123456789, 909876543212345678909876543); r2old.multiply_old; end}
x.report("19dv1:"){ for i in 1..n; rv1 = Peasant.new(1234567890987654321, 1098765432123456789); rv1.multiply_v1; end}
x.report("27dv1:"){ for i in 1..n; r2v1 = Peasant.new(123456789098765432123456789, 909876543212345678909876543); r2v1.multiply_v1; end}
end
user system total real
19dnew: 0.240000 0.000000 0.240000 ( 0.236432)
27dnew: 0.390000 0.000000 0.390000 ( 0.390416)
19dold: 0.230000 0.000000 0.230000 ( 0.236033)
27dold: 0.400000 0.000000 0.400000 ( 0.398432)
19dv1: 0.260000 0.000000 0.260000 ( 0.259945)
27dv1: 0.440000 0.000000 0.440000 ( 0.439224)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment