From 9a68f6970d336a009d256345274affb31f909ef7 Mon Sep 17 00:00:00 2001 From: masterexplorer Date: Tue, 27 Aug 2024 15:39:00 +0200 Subject: [PATCH] tests for C solution; optimized insertion; better codes --- TurboList.hpp | 15 ++++++++------- main.cpp | 18 +++++++++++++++++- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/TurboList.hpp b/TurboList.hpp index f38cfbc..a11e4f8 100644 --- a/TurboList.hpp +++ b/TurboList.hpp @@ -1,5 +1,6 @@ -#ifndef TURBO_LIST_H -#define TURBO_LIST_H +#ifndef TURBO_LIST_HPP +#define TURBO_LIST_HPP +// TODO: malloclike and freelike refactor #include #include @@ -38,10 +39,10 @@ class TurboList { } public: - inline TurboList(uint32_t initial_cap = 16) noexcept : + inline TurboList(uint32_t initial_size = 0, uint32_t initial_cap = 16) noexcept : old(nullptr), mid(0), - end(0), + end(initial_size), capacity(initial_cap) { nex = (int *) malloc(this->capacity * sizeof(int)); @@ -57,7 +58,8 @@ public: } inline void insert(int elem) noexcept { - if(TL_LIKELY(size() < capacity)) { + if(TL_LIKELY(end < capacity)) { + // INSERT /* Same as this: @@ -73,7 +75,6 @@ public: nex[end++] = elem; } else { // GROW - grow_and_insert(elem); } } @@ -83,4 +84,4 @@ public: } }; -#endif /* TURBO_LIST_H */ +#endif /* TURBO_LIST_HPP */ diff --git a/main.cpp b/main.cpp index 35bec68..2268d3f 100644 --- a/main.cpp +++ b/main.cpp @@ -5,6 +5,7 @@ #include #include #include"TurboList.hpp" +#include"turbolist.h" // #define PRINT_DBG // #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 { printf("%s ", prefix); - printf("took %d ms\n", (after - before)); + printf("took %zd ms\n", (after - before)); } int main() { @@ -46,5 +47,20 @@ int main() { } #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; }