Skip to content

Commit ca3d5e9

Browse files
tuedajodavies
authored andcommitted
perf: reserve capacity for vector passed to poly::get_variables()
Reserving capacity for the input vector with a fixed size to be passed to get_variables() prevents unnecessary reallocations during push_back operations.
1 parent 502e34d commit ca3d5e9

File tree

1 file changed

+7
-0
lines changed

1 file changed

+7
-0
lines changed

sources/polywrap.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,7 @@ WORD *poly_gcd(PHEAD WORD *a, WORD *b, WORD fit) {
146146

147147
// Extract variables
148148
vector<WORD *> e;
149+
e.reserve(2);
149150
e.push_back(a);
150151
e.push_back(b);
151152
poly::get_variables(BHEAD e, false, true);
@@ -202,6 +203,7 @@ WORD *poly_divmod(PHEAD WORD *a, WORD *b, int divmod, WORD fit) {
202203

203204
// get variables
204205
vector<WORD *> e;
206+
e.reserve(2);
205207
e.push_back(a);
206208
e.push_back(b);
207209
poly::get_variables(BHEAD e, false, false);
@@ -617,6 +619,7 @@ WORD *poly_ratfun_add (PHEAD WORD *t1, WORD *t2) {
617619

618620
// Extract variables
619621
vector<WORD *> e;
622+
e.reserve(4);
620623

621624
for (WORD *t=t1+FUNHEAD; t<t1+t1[1];) {
622625
e.push_back(t);
@@ -627,6 +630,8 @@ WORD *poly_ratfun_add (PHEAD WORD *t1, WORD *t2) {
627630
NEXTARG(t);
628631
}
629632

633+
assert(e.size() == 4);
634+
630635
poly::get_variables(BHEAD e, true, true);
631636

632637
// Check for modulus calculus
@@ -1679,6 +1684,7 @@ WORD *poly_inverse(PHEAD WORD *arga, WORD *argb) {
16791684

16801685
// Extract variables
16811686
vector<WORD *> e;
1687+
e.reserve(2);
16821688
e.push_back(arga);
16831689
e.push_back(argb);
16841690
poly::get_variables(BHEAD e, false, true);
@@ -1808,6 +1814,7 @@ WORD *poly_mul(PHEAD WORD *a, WORD *b) {
18081814

18091815
// Extract variables
18101816
vector<WORD *> e;
1817+
e.reserve(2);
18111818
e.push_back(a);
18121819
e.push_back(b);
18131820
poly::get_variables(BHEAD e, false, false); // TODO: any performance effect by sort_vars=true?

0 commit comments

Comments
 (0)