fix and simplify turbolist size calculation

This commit is contained in:
Richard Thier 2024-08-30 10:27:54 +02:00
parent 96aac6cc37
commit 06d0b329ba
3 changed files with 17 additions and 4 deletions

View File

@ -95,7 +95,7 @@ public:
} }
inline uint32_t size() noexcept { inline uint32_t size() noexcept {
return mid + (capacity - end - 1); return end;
} }
}; };

View File

@ -33,6 +33,7 @@ int main() {
{ {
auto before_vector = ms_now(); auto before_vector = ms_now();
std::vector<int> vec; std::vector<int> vec;
/*
std::vector<int> vec1; std::vector<int> vec1;
std::vector<int> vec2; std::vector<int> vec2;
std::vector<int> vec3; std::vector<int> vec3;
@ -42,8 +43,10 @@ int main() {
std::vector<int> vec7; std::vector<int> vec7;
std::vector<int> vec8; std::vector<int> vec8;
std::vector<int> vec9; std::vector<int> vec9;
*/
for(int i = 0; i < N; ++i) { for(int i = 0; i < N; ++i) {
vec.push_back(i); vec.push_back(i);
/*
vec1.push_back(i); vec1.push_back(i);
vec2.push_back(i); vec2.push_back(i);
vec3.push_back(i); vec3.push_back(i);
@ -53,6 +56,7 @@ int main() {
vec7.push_back(i); vec7.push_back(i);
vec8.push_back(i); vec8.push_back(i);
vec9.push_back(i); vec9.push_back(i);
*/
} }
auto after_vector = ms_now(); auto after_vector = ms_now();
printt("vector", before_vector, after_vector); printt("vector", before_vector, after_vector);
@ -63,6 +67,7 @@ int main() {
{ {
auto before_TurboList = ms_now(); auto before_TurboList = ms_now();
TurboList<int> list; TurboList<int> list;
/*
TurboList<int> list1; TurboList<int> list1;
TurboList<int> list2; TurboList<int> list2;
TurboList<int> list3; TurboList<int> list3;
@ -72,8 +77,10 @@ int main() {
TurboList<int> list7; TurboList<int> list7;
TurboList<int> list8; TurboList<int> list8;
TurboList<int> list9; TurboList<int> list9;
*/
for(int i = 0; i < N; ++i) { for(int i = 0; i < N; ++i) {
list.insert(i); list.insert(i);
/*
list1.insert(i); list1.insert(i);
list2.insert(i); list2.insert(i);
list3.insert(i); list3.insert(i);
@ -83,9 +90,11 @@ int main() {
list7.insert(i); list7.insert(i);
list8.insert(i); list8.insert(i);
list9.insert(i); list9.insert(i);
*/
} }
auto after_TurboList = ms_now(); auto after_TurboList = ms_now();
printt("TurboList", before_TurboList, after_TurboList); printt("TurboList", before_TurboList, after_TurboList);
assert(list.size() == N);
#ifdef PRINT_DBG #ifdef PRINT_DBG
for(int i = 0; i < list.size(); ++i) { for(int i = 0; i < list.size(); ++i) {
@ -96,7 +105,6 @@ int main() {
// C turbolist // // C turbolist //
/*
auto before_cturbolist = ms_now(); auto before_cturbolist = ms_now();
turbolist clist = turbolist_create(); turbolist clist = turbolist_create();
for(int i = 0; i < N; ++i) { for(int i = 0; i < N; ++i) {
@ -104,6 +112,7 @@ int main() {
} }
auto after_cturbolist = ms_now(); auto after_cturbolist = ms_now();
printt("C turbolist", before_cturbolist, after_cturbolist); printt("C turbolist", before_cturbolist, after_cturbolist);
assert(turbolist_size(&clist) == N);
#ifdef PRINT_DBG #ifdef PRINT_DBG
for(int i = 0; i < turbolist_size(clist); ++i) { for(int i = 0; i < turbolist_size(clist); ++i) {
@ -135,6 +144,7 @@ int main() {
} }
auto after_carenaturbolist = ms_now(); auto after_carenaturbolist = ms_now();
printt("C arena turbolist", before_carenaturbolist, after_carenaturbolist); printt("C arena turbolist", before_carenaturbolist, after_carenaturbolist);
assert(turbolist_size(&clist) == N);
#ifdef PRINT_DBG #ifdef PRINT_DBG
for(int i = 0; i < turbolist_size(clist); ++i) { for(int i = 0; i < turbolist_size(clist); ++i) {
@ -144,12 +154,12 @@ int main() {
turbolist_delete(&clist); turbolist_delete(&clist);
} }
*/
// C ARENA // // C ARENA //
auto before_arena = ms_now(); auto before_arena = ms_now();
arena a = newarena((ptrdiff_t)1 << 33); arena a = newarena((ptrdiff_t)1 << 33);
/*
arena a1 = newarena((ptrdiff_t)1 << 33); arena a1 = newarena((ptrdiff_t)1 << 33);
arena a2 = newarena((ptrdiff_t)1 << 33); arena a2 = newarena((ptrdiff_t)1 << 33);
arena a3 = newarena((ptrdiff_t)1 << 33); arena a3 = newarena((ptrdiff_t)1 << 33);
@ -159,12 +169,14 @@ int main() {
arena a7 = newarena((ptrdiff_t)1 << 33); arena a7 = newarena((ptrdiff_t)1 << 33);
arena a8 = newarena((ptrdiff_t)1 << 33); arena a8 = newarena((ptrdiff_t)1 << 33);
arena a9 = newarena((ptrdiff_t)1 << 33); arena a9 = newarena((ptrdiff_t)1 << 33);
*/
// steps at first real elem, there should be N from here! // steps at first real elem, there should be N from here!
int *arenalist = ((int*)alloc(&a, sizeof(int), sizeof(int), 1)) + 1; int *arenalist = ((int*)alloc(&a, sizeof(int), sizeof(int), 1)) + 1;
for(int i = 0; i < N; ++i) { for(int i = 0; i < N; ++i) {
int *value = (int*)alloc(&a, sizeof(int), sizeof(int), 1); int *value = (int*)alloc(&a, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
/*
value = (int*)alloc(&a1, sizeof(int), sizeof(int), 1); value = (int*)alloc(&a1, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
value = (int*)alloc(&a2, sizeof(int), sizeof(int), 1); value = (int*)alloc(&a2, sizeof(int), sizeof(int), 1);
@ -183,6 +195,7 @@ int main() {
*value = i; *value = i;
value = (int*)alloc(&a9, sizeof(int), sizeof(int), 1); value = (int*)alloc(&a9, sizeof(int), sizeof(int), 1);
*value = i; *value = i;
*/
} }
auto after_arena = ms_now(); auto after_arena = ms_now();
printt("C arena", before_arena, after_arena); printt("C arena", before_arena, after_arena);

View File

@ -94,7 +94,7 @@ static inline void turbolist_insert(turbolist *tl, int elem) {
} }
static inline uint32_t turbolist_size(turbolist *tl) { static inline uint32_t turbolist_size(turbolist *tl) {
return tl->mid + (tl->capacity - tl->end - 1); return tl->end;
} }
#endif /* TURBO_LIST_H */ #endif /* TURBO_LIST_H */