diff --git a/benchmarks/Index/Index.cpp b/benchmarks/Index/Index.cpp new file mode 100644 index 000000000..14bac99e6 --- /dev/null +++ b/benchmarks/Index/Index.cpp @@ -0,0 +1,92 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ +#ifdef _DEBUG + const int v_num = 10000; +#else + const int v_num = 10; +#endif + + const int isize = 1000000; + + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].FindAdd(i); + } + { + RTIMING("UnlinkKey v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].UnlinkKey(i); + } + RTIMING("Sweep v_num outer"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].FindAdd(i); + } + { + RTIMING("UnlinkKey v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].UnlinkKey(i); + } + RTIMING("Sweep v_num inner"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].insert(i); + } + + { + RTIMING("erase v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].erase(i); + } + delete[] v; + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].insert(i); + } + + { + RTIMING("erase v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].erase(i); + } + delete[] v; + } +} diff --git a/benchmarks/Index/Index.upp b/benchmarks/Index/Index.upp new file mode 100644 index 000000000..b87f41358 --- /dev/null +++ b/benchmarks/Index/Index.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + Index.cpp; + +mainconfig + "" = ""; + diff --git a/benchmarks/Index2/Index.cpp b/benchmarks/Index2/Index.cpp new file mode 100644 index 000000000..43db19604 --- /dev/null +++ b/benchmarks/Index2/Index.cpp @@ -0,0 +1,96 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ +#ifdef _DEBUG + const int v_num = 10000; +#else + const int v_num = 100000; +#endif + + const int isize = 100; + + Vector data; + for(int i = 0; i < isize; i++) + data.Add(Random()); + + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].FindAdd(data[i]); + } + { + RTIMING("UnlinkKey v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].UnlinkKey(data[i]); + } + RTIMING("Sweep v_num outer"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].FindAdd(data[i]); + } + { + RTIMING("UnlinkKey v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].UnlinkKey(data[i]); + } + RTIMING("Sweep v_num inner"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].insert(data[i]); + } + + { + RTIMING("erase v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].erase(data[i]); + } + delete[] v; + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].insert(i); + } + + { + RTIMING("erase v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].erase(i); + } + delete[] v; + } +} diff --git a/benchmarks/Index2/Index2.upp b/benchmarks/Index2/Index2.upp new file mode 100644 index 000000000..b87f41358 --- /dev/null +++ b/benchmarks/Index2/Index2.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + Index.cpp; + +mainconfig + "" = ""; + diff --git a/benchmarks/Index3/Index.cpp b/benchmarks/Index3/Index.cpp new file mode 100644 index 000000000..ab6097a74 --- /dev/null +++ b/benchmarks/Index3/Index.cpp @@ -0,0 +1,99 @@ +#include +#include + +using namespace Upp; + +CONSOLE_APP_MAIN +{ +#ifdef _DEBUG + const int v_num = 10000; +#else + const int v_num = 100000; +#endif + + const int isize = 100; + + Vector data; + for(int i = 0; i < isize; i++) + data.Add(AsString(Random())); + + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].FindAdd(data[i]); + } + return; + { + RTIMING("UnlinkKey v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].UnlinkKey(data[i]); + } + RTIMING("Sweep v_num outer"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + { + Vector > v; + v.SetCount(v_num); + { + RTIMING("FindAdd v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) { + RTIMING("2"); + v[j].FindAdd(data[i]); + } + } + { + RTIMING("UnlinkKey v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].UnlinkKey(data[i]); + } + RTIMING("Sweep v_num inner"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].insert(data[i]); + } + + { + RTIMING("erase v_num outer"); + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].erase(data[i]); + } + delete[] v; + } + + { + std::set *v = new std::set[v_num]; + { + RTIMING("insert v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].insert(data[i]); + } + + { + RTIMING("erase v_num inner"); + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].erase(data[i]); + } + delete[] v; + } +} diff --git a/benchmarks/Index3/Index3.upp b/benchmarks/Index3/Index3.upp new file mode 100644 index 000000000..b87f41358 --- /dev/null +++ b/benchmarks/Index3/Index3.upp @@ -0,0 +1,9 @@ +uses + Core; + +file + Index.cpp; + +mainconfig + "" = ""; +