Grafalgo
Library of useful data structures and algorithms
/Users/jst/src/grafalgo/cpp/dataStructures/searchTrees/perf/evalTreeMap.cpp
00001 #include "stdinc.h"
00002 #include "TreeMap.h"
00003 #include "Util.h"
00004 
00005 void basicEval(int n) {
00006         int t1, t2;
00007         TreeMap map(n);
00008         int *perm = new int[2*n+1];
00009         Util::genPerm(2*n,perm);
00010 
00011         cout << "putting in random order: ";
00012         t1 = Util::getTime();
00013         for (int i = 1; i <= n; i++) {
00014                 map.put(perm[i],i);
00015         }
00016         t2 = Util::getTime();
00017         cout << t2-t1 << " " << ((double) (t2-t1))/n << endl;
00018 
00019         cout << "getting in reverse random order (hits): ";
00020         t1 = Util::getTime();
00021         for (int i = 1; i <= n; i++) {
00022                 map.get(perm[(n+1)-i]);
00023         }
00024         t2 = Util::getTime();
00025         cout << t2-t1 << " " << ((double) (t2-t1))/n << endl;
00026 
00027         cout << "getting in random order (misses): ";
00028         t1 = Util::getTime();
00029         for (int i = n+1; i <= 2*n; i++) {
00030                 map.get(perm[i]);
00031         }
00032         t2 = Util::getTime();
00033         cout << t2-t1 << " " << ((double) (t2-t1))/n << endl;
00034 
00035         cout << "remapping existing pairs: ";
00036         t1 = Util::getTime();
00037         for (int i = 1; i <= n; i++) {
00038                 map.put(perm[i],-i);
00039         }
00040         t2 = Util::getTime();
00041         cout << t2-t1 << " " << ((double) (t2-t1))/n << endl;
00042 
00043         cout << "remove/put pairs: ";
00044         t1 = Util::getTime();
00045         for (int i = 1; i <= n; i++) {
00046                 map.remove(perm[i]);
00047                 map.put(perm[i+n],i+n);
00048         }
00049         t2 = Util::getTime();
00050         cout << t2-t1 << " " << ((double) (t2-t1))/n << endl;
00051 }
00052 
00053 
00054 main() {
00055         int n = 1000;
00056         cout << "n=" << n << endl;
00057         basicEval(n);
00058 
00059         n = 2000;
00060         cout << "n=" << n << endl;
00061         basicEval(n);
00062 
00063         n = 4000;
00064         cout << "n=" << n << endl;
00065         basicEval(n);
00066 
00067         n = 10000;
00068         cout << "n=" << n << endl;
00069         basicEval(n);
00070 
00071         n = 20000;
00072         cout << "n=" << n << endl;
00073         basicEval(n);
00074 
00075         n = 40000;
00076         cout << "n=" << n << endl;
00077         basicEval(n);
00078 
00079         n = 100000;
00080         cout << "n=" << n << endl;
00081         basicEval(n);
00082 
00083         n = 200000;
00084         cout << "n=" << n << endl;
00085         basicEval(n);
00086 
00087         n = 400000;
00088         cout << "n=" << n << endl;
00089         basicEval(n);
00090 
00091         n = 1000000;
00092         cout << "n=" << n << endl;
00093         basicEval(n);
00094 }
 All Classes Files Functions Variables Typedefs Friends