profiling avl

This commit is contained in:
IlyaShurupov 2024-04-08 15:30:42 +03:00
parent aafecb8359
commit 47ad484089
3 changed files with 74 additions and 60 deletions

View file

@ -0,0 +1,59 @@
#include <iostream>
#include "Tree.hpp"
#include "Timing.hpp"
using namespace tp;
struct Item {
Item() :
data(0) {}
bool presents = false;
alni data;
};
const auto size = 1000000;
Item buff[size];
int main() {
AvlTree<AvlNumericKey<alni>, alni> tree;
for (auto i : Range(size)) {
buff[i].data = i;
}
Timer insertTime;
ualni loadSize = 0;
while (loadSize < size / 2) {
auto idx = ualni(randomFloat() * (size - 1));
if (!buff[idx].presents) {
tree.insert((alni) buff[idx].data, buff[idx].data);
loadSize++;
buff[idx].presents = true;
}
}
std::cout << "AVL Tree Insert Speed " << (double) loadSize / (double) insertTime.timePassed() << "\n";
Timer removeTime;
ualni unloadSize = 0;
while (unloadSize < size / 2) {
auto idx = ualni(randomFloat() * (size - 1));
if (buff[idx].presents) {
tree.remove((alni) buff[idx].data);
unloadSize++;
buff[idx].presents = false;
}
}
for (auto& item : buff) {
if (item.presents) {
tree.remove((alni) item.data);
unloadSize++;
item.presents = false;
}
}
std::cout << "AVL Tree Remove Speed " << (double) unloadSize / (double) removeTime.timePassed() << "\n";
}