tests for C solution; optimized insertion; better codes

This commit is contained in:
masterexplorer 2024-08-27 15:39:00 +02:00
parent 5d5eab35b5
commit 9a68f6970d
2 changed files with 25 additions and 8 deletions

View File

@ -1,5 +1,6 @@
#ifndef TURBO_LIST_H #ifndef TURBO_LIST_HPP
#define TURBO_LIST_H #define TURBO_LIST_HPP
// TODO: malloclike and freelike refactor
#include<cstdint> #include<cstdint>
#include<cstdlib> #include<cstdlib>
@ -38,10 +39,10 @@ class TurboList {
} }
public: public:
inline TurboList(uint32_t initial_cap = 16) noexcept : inline TurboList(uint32_t initial_size = 0, uint32_t initial_cap = 16) noexcept :
old(nullptr), old(nullptr),
mid(0), mid(0),
end(0), end(initial_size),
capacity(initial_cap) { capacity(initial_cap) {
nex = (int *) malloc(this->capacity * sizeof(int)); nex = (int *) malloc(this->capacity * sizeof(int));
@ -57,7 +58,8 @@ public:
} }
inline void insert(int elem) noexcept { inline void insert(int elem) noexcept {
if(TL_LIKELY(size() < capacity)) { if(TL_LIKELY(end < capacity)) {
// INSERT // INSERT
/* Same as this: /* Same as this:
@ -73,7 +75,6 @@ public:
nex[end++] = elem; nex[end++] = elem;
} else { } else {
// GROW // GROW
grow_and_insert(elem); grow_and_insert(elem);
} }
} }
@ -83,4 +84,4 @@ public:
} }
}; };
#endif /* TURBO_LIST_H */ #endif /* TURBO_LIST_HPP */

View File

@ -5,6 +5,7 @@
#include<chrono> #include<chrono>
#include<vector> #include<vector>
#include"TurboList.hpp" #include"TurboList.hpp"
#include"turbolist.h"
// #define PRINT_DBG // #define PRINT_DBG
// #define N 65535 // #define N 65535
@ -19,7 +20,7 @@ static inline size_t ms_now() noexcept {
static inline void printt(const char *prefix, size_t before, size_t after) noexcept { static inline void printt(const char *prefix, size_t before, size_t after) noexcept {
printf("%s ", prefix); printf("%s ", prefix);
printf("took %d ms\n", (after - before)); printf("took %zd ms\n", (after - before));
} }
int main() { int main() {
@ -46,5 +47,20 @@ int main() {
} }
#endif /* PRINT_DBG */ #endif /* PRINT_DBG */
turbolist clist = turbolist_create();
auto before_cturbolist = ms_now();
for(int i = 0; i < N; ++i) {
turbolist_insert(&clist, i);
}
auto after_cturbolist = ms_now();
printt("C turbolist", before_cturbolist, after_cturbolist);
#ifdef PRINT_DBG
for(int i = 0; i < turbolist_size(clist); ++i) {
printf("%d\n", turbolist_get(clist, i));
}
#endif /* PRINT_DBG */
return 0; return 0;
} }