📄 maptest.cc
字号:
if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; int len = sprintf(buf, "%08d", i); int vsiz; const void *vbuf = tcmapget(mymap, buf, len, &vsiz); if(!vbuf){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", tcmaprnum(mymap)); tcmapdel(mymap); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform tctree commandstatic int proctctree(int rnum, bool rd){ iprintf("<Tokyo Cabinet Tree Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { TCTREE *mytree = tctreenew(); for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; int len = sprintf(buf, "%08d", i); tctreeput(mytree, buf, len, buf, len); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; int len = sprintf(buf, "%08d", i); int vsiz; const void *vbuf = tctreeget(mytree, buf, len, &vsiz); if(!vbuf){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", tctreernum(mytree)); tctreedel(mytree); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform stlmap commandstatic int procstlmap(int rnum, bool rd){ iprintf("<STL Map Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { stlmap mymap; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert(stlmap::value_type(buf, buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); stlmap::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform multimap commandstatic int procstlmmap(int rnum, bool rd){ iprintf("<STL Multi Map Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { stlmmap mymap; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert(stlmmap::value_type(buf, buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); stlmmap::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform stlset commandstatic int procstlset(int rnum, bool rd){ iprintf("<STL Set Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { stlset mymap; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert(stlset::value_type(buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); stlset::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform gnuhash commandstatic int procgnuhash(int rnum, bool rd){ iprintf("<GNU Hash Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { gnuhash mymap; mymap.resize(rnum + 1); for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert_noresize(gnuhash::value_type(buf, buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); gnuhash::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform ggldh commandstatic int procggldh(int rnum, bool rd){ iprintf("<Google Dense Hash Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { ggldh mymap; mymap.set_empty_key(""); mymap.resize(rnum + 1); for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert(ggldh::value_type(buf, buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); ggldh::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// perform gglsh commandstatic int procgglsh(int rnum, bool rd){ iprintf("<Google Sparse Hash Writing Test>\n rnum=%d rd=%d\n\n", rnum, rd); double stime = tctime(); { gglsh mymap; mymap.resize(rnum + 1); for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); mymap.insert(gglsh::value_type(buf, buf)); if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } if(rd){ double itime = tctime(); iprintf("time: %.3f\n", itime - stime); stime = itime; for(int i = 1; i <= rnum; i++){ char buf[RECBUFSIZ]; sprintf(buf, "%08d", i); gglsh::const_iterator it = mymap.find(buf); if(it == mymap.end()){ iprintf("not found\n"); break; } if(rnum > 250 && i % (rnum / 250) == 0){ putchar('.'); fflush(stdout); if(i == rnum || i % (rnum / 10) == 0) iprintf(" (%08d)\n", i); } } } iprintf("record number: %d\n", mymap.size()); } iprintf("time: %.3f\n", tctime() - stime); iprintf("ok\n\n"); return 0;}// END OF FILE
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -