summaryrefslogtreecommitdiffhomepage
path: root/include
diff options
context:
space:
mode:
authorTyge Løvset <[email protected]>2021-11-05 16:30:12 +0100
committerTyge Løvset <[email protected]>2021-11-05 16:30:12 +0100
commit38935b1d85da5be067b5cf0c00dc02d8cb231f9e (patch)
tree626f042aa517ffe33559e0cf137c7dcefb2807a5 /include
parent46dd3e3e1d89bfba5ea0b133456b674e6f5590a0 (diff)
downloadSTC-modified-38935b1d85da5be067b5cf0c00dc02d8cb231f9e.tar.gz
STC-modified-38935b1d85da5be067b5cf0c00dc02d8cb231f9e.zip
Changed array expansion policy from 1.625x to 1.5x
Diffstat (limited to 'include')
-rw-r--r--include/stc/alt/cstr.h6
-rw-r--r--include/stc/cmap.h2
-rw-r--r--include/stc/csmap.h2
-rw-r--r--include/stc/cstr.h6
-rw-r--r--include/stc/cvec.h4
5 files changed, 10 insertions, 10 deletions
diff --git a/include/stc/alt/cstr.h b/include/stc/alt/cstr.h
index 98a090e0..39da2e6a 100644
--- a/include/stc/alt/cstr.h
+++ b/include/stc/alt/cstr.h
@@ -274,7 +274,7 @@ STC_DEF void cstr_internal_move_(cstr* self, size_t pos1, size_t pos2) {
cstr_rep_t rep = cstr_rep_(self);
cstr_size_t newlen = rep.size + pos2 - pos1;
if (newlen > rep.cap)
- rep.data = cstr_reserve(self, (rep.size*13 >> 3) + pos2 - pos1);
+ rep.data = cstr_reserve(self, (rep.size*3 >> 1) + pos2 - pos1);
memmove(&rep.data[pos2], &rep.data[pos1], rep.size - pos1);
cstr_set_size_(self, newlen);
}
@@ -368,7 +368,7 @@ STC_DEF void cstr_append_n(cstr* self, const char* str, cstr_size_t n) {
cstr_rep_t rep = cstr_rep_(self);
if (rep.size + n > rep.cap) {
cstr_size_t off = (cstr_size_t)(str - rep.data); /* handle self append */
- rep.data = cstr_reserve(self, (rep.size*13 >> 3) + n);
+ rep.data = cstr_reserve(self, (rep.size*3 >> 1) + n);
if (off <= rep.size) str = rep.data + off;
}
memcpy(rep.data + rep.size, str, n);
@@ -388,7 +388,7 @@ STC_DEF bool cstr_getdelim(cstr *self, int delim, FILE *fp) {
}
if (pos == rep.cap) {
cstr_set_size_(self, pos);
- rep.data = cstr_reserve(self, (rep.cap = (rep.cap*13 >> 3) + 16));
+ rep.data = cstr_reserve(self, (rep.cap = (rep.cap*3 >> 1) + 16));
}
rep.data[pos++] = (char) c;
c = fgetc(fp);
diff --git a/include/stc/cmap.h b/include/stc/cmap.h
index 1a0f28b4..1c9abea7 100644
--- a/include/stc/cmap.h
+++ b/include/stc/cmap.h
@@ -302,7 +302,7 @@ _cx_memb(_bucket_)(const _cx_self* self, const _cx_rawkey* rkeyptr) {
STC_DEF _cx_result
_cx_memb(_insert_entry_)(_cx_self* self, i_keyraw rkey) {
if (self->size + 1 >= (_cx_size) (self->bucket_count * self->max_load_factor))
- _cx_memb(_reserve)(self, 8 + (self->size*13ull >> 3));
+ _cx_memb(_reserve)(self, 8 + ((size_t)self->size*3 >> 1));
chash_bucket_t b = _cx_memb(_bucket_)(self, &rkey);
_cx_result res = {&self->table[b.idx], !self->_hashx[b.idx]};
if (res.inserted) {
diff --git a/include/stc/csmap.h b/include/stc/csmap.h
index 34ff22d7..2a0e6b89 100644
--- a/include/stc/csmap.h
+++ b/include/stc/csmap.h
@@ -258,7 +258,7 @@ _cx_memb(_node_new_)(_cx_self* self, int level) {
tn = rep->disp;
rep->disp = self->nodes[tn].link[1];
} else {
- if ((tn = rep->head + 1) > rep->cap) _cx_memb(_reserve)(self, 4 + (tn*13 >> 3));
+ if ((tn = rep->head + 1) > rep->cap) _cx_memb(_reserve)(self, 4 + (tn*3 >> 1));
++_csmap_rep(self)->head; /* do after reserve */
}
_cx_node* dn = &self->nodes[tn];
diff --git a/include/stc/cstr.h b/include/stc/cstr.h
index c0a6650b..d07b3ce3 100644
--- a/include/stc/cstr.h
+++ b/include/stc/cstr.h
@@ -269,7 +269,7 @@ cstr_append_n(cstr* self, const char* str, size_t n) {
size_t oldlen = _cstr_rep(self)->size, newlen = oldlen + n;
if (newlen > _cstr_rep(self)->cap) {
size_t off = (size_t) (str - self->str); /* handle self append */
- cstr_reserve(self, (oldlen*13 >> 3) + n);
+ cstr_reserve(self, (oldlen*3 >> 1) + n);
if (off <= oldlen) str = self->str + off;
}
memcpy(&self->str[oldlen], str, n);
@@ -282,7 +282,7 @@ STC_INLINE void _cstr_internal_move(cstr* self, size_t pos1, size_t pos2) {
return;
size_t len = _cstr_rep(self)->size, newlen = len + pos2 - pos1;
if (newlen > _cstr_rep(self)->cap)
- cstr_reserve(self, (len*13 >> 3) + pos2 - pos1);
+ cstr_reserve(self, (len*3 >> 1) + pos2 - pos1);
memmove(&self->str[pos2], &self->str[pos1], len - pos1);
self->str[_cstr_rep(self)->size = newlen] = '\0';
}
@@ -343,7 +343,7 @@ cstr_getdelim(cstr *self, int delim, FILE *fp) {
return true;
}
if (pos == cap)
- cap = cstr_reserve(self, (cap*13 >> 3) + 16);
+ cap = cstr_reserve(self, (cap*3 >> 1) + 16);
self->str[pos++] = (char) c;
c = fgetc(fp);
}
diff --git a/include/stc/cvec.h b/include/stc/cvec.h
index a650d277..e58e8793 100644
--- a/include/stc/cvec.h
+++ b/include/stc/cvec.h
@@ -280,7 +280,7 @@ STC_DEF _cx_value*
_cx_memb(_push_back)(_cx_self* self, i_val value) {
size_t len = cvec_rep_(self)->size;
if (len == _cx_memb(_capacity)(*self))
- _cx_memb(_reserve)(self, (len*13 >> 3) + 4);
+ _cx_memb(_reserve)(self, (len*3 >> 1) + 4);
_cx_value *v = self->data + cvec_rep_(self)->size++;
*v = value; return v;
}
@@ -298,7 +298,7 @@ _cx_memb(_insert_space_)(_cx_self* self, _cx_value* pos, size_t len) {
size_t idx = pos - self->data, size = cvec_rep_(self)->size;
if (len == 0) return pos;
if (size + len > _cx_memb(_capacity)(*self))
- _cx_memb(_reserve)(self, (size*13 >> 3) + len),
+ _cx_memb(_reserve)(self, (size*3 >> 1) + len),
pos = self->data + idx;
cvec_rep_(self)->size += len;
memmove(pos + len, pos, (size - idx) * sizeof(i_val));