tests for C solution; optimized insertion; better codes
This commit is contained in:
parent
5d5eab35b5
commit
9a68f6970d
@ -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 */
|
||||||
|
18
main.cpp
18
main.cpp
@ -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;
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user