optimized out count/size as calculated field - much faster
This commit is contained in:
parent
640672be47
commit
fb8ca320d0
@ -24,7 +24,6 @@ class TurboList {
|
|||||||
uint32_t end; // non-inclusive e . . . .
|
uint32_t end; // non-inclusive e . . . .
|
||||||
|
|
||||||
uint32_t capacity;
|
uint32_t capacity;
|
||||||
uint32_t count;
|
|
||||||
|
|
||||||
TL_NOINLINE void grow_and_insert(int elem) noexcept {
|
TL_NOINLINE void grow_and_insert(int elem) noexcept {
|
||||||
// assert(mid == 0);
|
// assert(mid == 0);
|
||||||
@ -43,8 +42,7 @@ public:
|
|||||||
old(nullptr),
|
old(nullptr),
|
||||||
mid(0),
|
mid(0),
|
||||||
end(0),
|
end(0),
|
||||||
capacity(initial_cap),
|
capacity(initial_cap) {
|
||||||
count(0) {
|
|
||||||
|
|
||||||
nex = (int *) malloc(this->capacity * sizeof(int));
|
nex = (int *) malloc(this->capacity * sizeof(int));
|
||||||
}
|
}
|
||||||
@ -59,7 +57,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline void insert(int elem) noexcept {
|
inline void insert(int elem) noexcept {
|
||||||
if(TL_LIKELY(count < capacity)) {
|
if(TL_LIKELY(size() < capacity)) {
|
||||||
// INSERT
|
// INSERT
|
||||||
|
|
||||||
/* Same as this:
|
/* Same as this:
|
||||||
@ -73,7 +71,6 @@ public:
|
|||||||
nex[mid] = hasmid ? old[mid] : nex[mid];
|
nex[mid] = hasmid ? old[mid] : nex[mid];
|
||||||
|
|
||||||
nex[end++] = elem;
|
nex[end++] = elem;
|
||||||
++count;
|
|
||||||
} else {
|
} else {
|
||||||
// GROW
|
// GROW
|
||||||
|
|
||||||
@ -82,7 +79,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
inline uint32_t size() noexcept {
|
inline uint32_t size() noexcept {
|
||||||
return count;
|
return mid + (capacity - end - 1);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user