⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 maptest.cc

📁 Tokyo Cabinet的Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符
💻 CC
📖 第 1 页 / 共 2 页
字号:
    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 + -