bc: avoid bc_vec_item() calls in bc_array_copy()
authorDenys Vlasenko <vda.linux@googlemail.com>
Wed, 19 Dec 2018 16:59:30 +0000 (17:59 +0100)
committerDenys Vlasenko <vda.linux@googlemail.com>
Wed, 19 Dec 2018 16:59:30 +0000 (17:59 +0100)
function                                             old     new   delta
zbc_program_copyToVar                                311     300     -11

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/bc.c

index 8316933f6c7347a121487c0c713b7d98f870f697..01442c33b43ffb644c380a21306273a80cc0fe7f 100644 (file)
@@ -2572,14 +2572,16 @@ static void bc_array_expand(BcVec *a, size_t len)
 
 static void bc_array_copy(BcVec *d, const BcVec *s)
 {
+       BcNum *dnum, *snum;
        size_t i;
 
        bc_vec_pop_all(d);
        bc_vec_expand(d, s->cap);
        d->len = s->len;
 
-       for (i = 0; i < s->len; ++i) {
-               BcNum *dnum = bc_vec_item(d, i), *snum = bc_vec_item(s, i);
+       dnum = (void*)d->v;
+       snum = (void*)s->v;
+       for (i = 0; i < s->len; i++, dnum++, snum++) {
                bc_num_init(dnum, snum->len);
                bc_num_copy(dnum, snum);
        }