diff --git a/benchmarks/HeapIde/HeapIde.upp b/benchmarks/Heap/Heap.upp similarity index 100% rename from benchmarks/HeapIde/HeapIde.upp rename to benchmarks/Heap/Heap.upp diff --git a/benchmarks/HeapIde/HeapIde.cpp b/benchmarks/Heap/HeapIde.cpp similarity index 87% rename from benchmarks/HeapIde/HeapIde.cpp rename to benchmarks/Heap/HeapIde.cpp index 76ab50bec..cf4baae1f 100644 --- a/benchmarks/HeapIde/HeapIde.cpp +++ b/benchmarks/Heap/HeapIde.cpp @@ -3,7 +3,7 @@ using namespace Upp; -void *ptr[10000000]; +void *ptr[20000000]; struct Record { int tid; @@ -16,7 +16,7 @@ CONSOLE_APP_MAIN StdLogSetup(LOG_COUT|LOG_FILE); RLOG("Decompressing"); Record *r; - int64 l; + int l; { String s = LZMADecompress(LoadDataFile( // "ide.lzma" @@ -41,7 +41,7 @@ CONSOLE_APP_MAIN Record *end = r + l / 16; for(Record *s = r; s < end; s++) - if(s->sz != 0xffffffffffffffff) + if(s->sz != 0xffffffffffffffff) { if(s->sz <= 992) smalln++; else @@ -49,6 +49,7 @@ CONSOLE_APP_MAIN largen++; else hugen++; + } RDUMP(smalln); RDUMP(largen); diff --git a/benchmarks/HeapIde/ide.lzma b/benchmarks/Heap/ide.lzma similarity index 100% rename from benchmarks/HeapIde/ide.lzma rename to benchmarks/Heap/ide.lzma diff --git a/benchmarks/Heap/index3.lzma b/benchmarks/Heap/index3.lzma new file mode 100644 index 000000000..14421dd08 Binary files /dev/null and b/benchmarks/Heap/index3.lzma differ diff --git a/benchmarks/HeapIde/index3.lzma b/benchmarks/HeapIde/index3.lzma deleted file mode 100644 index 2a559afb9..000000000 Binary files a/benchmarks/HeapIde/index3.lzma and /dev/null differ diff --git a/benchmarks/Index2/Index.cpp b/benchmarks/Index2/Index.cpp index 43db19604..fb9e8f19f 100644 --- a/benchmarks/Index2/Index.cpp +++ b/benchmarks/Index2/Index.cpp @@ -8,89 +8,100 @@ CONSOLE_APP_MAIN #ifdef _DEBUG const int v_num = 10000; #else - const int v_num = 100000; + const int v_num = 1000; #endif const int isize = 100; + const int N = 100; Vector data; - for(int i = 0; i < isize; i++) + for(int i = 0; i < isize * v_num; i++) data.Add(Random()); - { - Vector > v; - v.SetCount(v_num); + for(int ii = 0; ii < N; ii++) { { - RTIMING("FindAdd v_num outer"); - for (int j = 0; j < v_num; ++j) + Vector > v; + v.SetCount(v_num); + { + RTIMING("inner FindAdd v_num"); + int *s = data; for (int i = 0; i < isize; ++i) - v[j].FindAdd(data[i]); + for (int j = 0; j < v_num; ++j) + v[j].FindAdd(*s++); + } + { + RTIMING("inner UnlinkKey v_num"); + int *s = data; + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].UnlinkKey(*s++); + } + RTIMING("inner Sweep v_num"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); } { - 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) + Vector > v; + v.SetCount(v_num); + { + RTIMING("outer FindAdd v_num"); + int *s = data; 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 i = 0; i < isize; ++i) + v[j].FindAdd(*s++); + } + { + RTIMING("outer UnlinkKey v_num"); + int *s = data; 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]); + for (int i = 0; i < isize; ++i) + v[j].UnlinkKey(*s++); + } + RTIMING("outer Sweep v_num"); + const int jsize = v_num; + for (int j = 0; j < jsize; ++j) + v[j].Sweep(); } { - 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) + std::set *v = new std::set[v_num]; + { + RTIMING("outer insert v_num"); + int *s = data; for (int j = 0; j < v_num; ++j) - v[j].insert(i); + for (int i = 0; i < isize; ++i) + v[j].insert(*s++); + } + + { + RTIMING("outer erase v_num"); + int *s = data; + for (int j = 0; j < v_num; ++j) + for (int i = 0; i < isize; ++i) + v[j].erase(*s++); + } + delete[] v; } { - RTIMING("erase v_num inner"); - for (int i = 0; i < isize; ++i) - for (int j = 0; j < v_num; ++j) - v[j].erase(i); + std::set *v = new std::set[v_num]; + { + RTIMING("inner insert v_num"); + int *s = data; + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].insert(*s++); + } + + { + RTIMING("inner erase v_num"); + int *s = data; + for (int i = 0; i < isize; ++i) + for (int j = 0; j < v_num; ++j) + v[j].erase(*s++); + } + delete[] v; } - delete[] v; } } diff --git a/benchmarks/Index2/Index2.upp b/benchmarks/Index2/Index2.upp index b87f41358..dea9fec5d 100644 --- a/benchmarks/Index2/Index2.upp +++ b/benchmarks/Index2/Index2.upp @@ -5,5 +5,6 @@ file Index.cpp; mainconfig - "" = ""; + "" = "", + "" = "USEMALLOC"; diff --git a/benchmarks/Index3/Index.cpp b/benchmarks/Index3/Index.cpp index 3e90de396..9e4d3752b 100644 --- a/benchmarks/Index3/Index.cpp +++ b/benchmarks/Index3/Index.cpp @@ -37,6 +37,7 @@ CONSOLE_APP_MAIN for (int j = 0; j < jsize; ++j) v[j].Sweep(); } + return; { Vector > v; v.SetCount(v_num);