Skip to content

Commit e79182a

Browse files
authored
Add gcd benchmark (#205)
1 parent 3f18100 commit e79182a

File tree

1 file changed

+65
-8
lines changed

1 file changed

+65
-8
lines changed

perf/gcd.jl

Lines changed: 65 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,68 @@
1-
using DynamicPolynomials
1+
using BenchmarkTools
2+
3+
function bench1(x, y, z, T=Rational{BigInt})
4+
o = one(T)
5+
p = (o * x + o * y^2) * (o * z^3 + o * y^2 + o * x)
6+
q = (o * x + o * y + o * z) * (o * x^2 + o * y)
7+
@benchmark gcd($p, $q)
8+
end
9+
10+
function bench2(x, y, z, t)
11+
p = x * y + 3 * (z * t)
12+
q = (p + 1) * p
13+
@benchmark gcd($p, $q)
14+
end
15+
16+
function bench3(x, y, z, t)
17+
c1 = 10*(x * z + x)
18+
c2 = 2*(x^2 + z)
19+
c3 = 2*(2 - z )
20+
c4 = 20*(x * z^2)
21+
e1 = 0
22+
e2 = 5
23+
e3 = 7
24+
e4 = 10
25+
p = c1 * y^e1 + c2 * y^e2 + c3 * y^e3 + c4 * y^e4
26+
q = prod(i->p + i, 0:3)
27+
@benchmark for i in 0:3
28+
gcd($p + i, $q)
29+
end
30+
end
31+
32+
import SIMDPolynomials
33+
function bench_SP()
34+
x, y, z, t = [SIMDPolynomials.PackedMonomial{4,7}(i) for i in 0:3]
35+
b1 = bench1(x, y, z)
36+
b2 = bench2(x, y, z, t)
37+
b3 = bench3(x, y, z, t)
38+
return b1, b2, b3
39+
end
40+
41+
import DynamicPolynomials
42+
function bench_DP()
43+
DynamicPolynomials.@polyvar x y z t
44+
b1 = bench1(x, y, z)
45+
b2 = bench2(x, y, z, t)
46+
b3 = bench3(x, y, z, t)
47+
return b1, b2, b3
48+
end
49+
50+
import TypedPolynomials
51+
function bench_TP()
52+
TypedPolynomials.@polyvar x y z t
53+
b1 = bench1(x, y, z)
54+
b2 = bench2(x, y, z, t)
55+
b3 = bench3(x, y, z, t)
56+
return b1, b2, b3
57+
end
58+
59+
include("table.jl")
260

361
function bench()
4-
o = one(Rational{BigInt})
5-
@polyvar x y z
6-
a = (o * x + o * y^2) * (o * z^3 + o * y^2 + o * x)
7-
@show a
8-
b = (o * x + o * y + o * z) * (o * x^2 + o * y)
9-
@show b
10-
@time gcd(a, b)
62+
bs1, bs2, bs3 = bench_SP()
63+
bd1, bd2, bd3 = bench_DP()
64+
bt1, bt2, bt3 = bench_TP()
65+
prettyprint(bs1, bd1, bt1)
66+
prettyprint(bs2, bd2, bt2)
67+
prettyprint(bs3, bd3, bt3)
1168
end

0 commit comments

Comments
 (0)