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

📄 tcutest.c

📁 Tokyo Cabinet的Tokyo Cabinet 是一个DBM的实现。这里的数据库由一系列key-value对的记录构成。key和value都可以是任意长度的字节序列,既可以是二进制也可以是字符
💻 C
📖 第 1 页 / 共 4 页
字号:
      tcptrlistpush(ptrlist, tcmemdup(kbuf, ksiz));      break;    case 5:      iputchar('5');      tclistpush2(list, kbuf);      break;    case 6:      iputchar('6');      tmp = tcmemdup(kbuf, ksiz);      tclistpushmalloc(list, tmp, strlen(tmp));      break;    case 7:      iputchar('7');      if(myrand(10) == 0){        tcfree(tclistpop(list, &ksiz));        tcfree(tcptrlistpop(ptrlist));      }      break;    case 8:      iputchar('8');      if(myrand(10) == 0) tcfree(tclistpop2(list));      break;    case 9:      iputchar('9');      tclistunshift(list, kbuf, ksiz);      tcptrlistunshift(ptrlist, tcmemdup(kbuf, ksiz));      break;    case 10:      iputchar('A');      tclistunshift2(list, kbuf);      break;    case 11:      iputchar('B');      if(myrand(10) == 0){        tcfree(tclistshift(list, &ksiz));        tcfree(tcptrlistshift(ptrlist));      }      break;    case 12:      iputchar('C');      if(myrand(10) == 0) tcfree(tclistshift2(list));      break;    case 13:      iputchar('D');      tclistinsert(list, i / 10, kbuf, ksiz);      if(tcptrlistnum(ptrlist) > i / 10) tcptrlistinsert(ptrlist, i / 10, tcmemdup(kbuf, ksiz));      break;    case 14:      iputchar('E');      tclistinsert2(list, i / 10, kbuf);      break;    case 15:      iputchar('F');      if(myrand(10) == 0){        tcfree(tclistremove(list, i / 10, &ksiz));        tcfree(tcptrlistremove(ptrlist, i / 10));      }      break;    case 16:      iputchar('G');      if(myrand(10) == 0) tcfree(tclistremove2(list, i / 10));      break;    case 17:      iputchar('H');      tclistover(list, i / 10, kbuf, ksiz);      if(tcptrlistnum(ptrlist) > i / 10){        tcfree(tcptrlistval(ptrlist, i / 10));        tcptrlistover(ptrlist, i / 10, tcmemdup(kbuf, ksiz));      }      break;    case 18:      iputchar('I');      tclistover2(list, i / 10, kbuf);      break;    case 19:      iputchar('J');      if(myrand(rnum / 1000 + 1) == 0) tclistsort(list);      break;    case 20:      iputchar('K');      if(myrand(rnum / 1000 + 1) == 0) tclistsortci(list);      break;    case 21:      iputchar('L');      if(myrand(rnum / 1000 + 1) == 0) tclistlsearch(list, kbuf, ksiz);      break;    case 22:      iputchar('M');      if(myrand(rnum / 1000 + 1) == 0) tclistbsearch(list, kbuf, ksiz);      break;    case 23:      iputchar('N');      if(myrand(rnum / 100 + 1) == 0){        tclistclear(list);        for(int j = 0; j < tcptrlistnum(ptrlist); j++){          tcfree(tcptrlistval(ptrlist, j));        }        tcptrlistclear(ptrlist);      }      break;    case 24:      iputchar('O');      if(myrand(rnum / 100 + 1) == 0){        int dsiz;        char *dbuf = tclistdump(list, &dsiz);        tclistdel(tclistload(dbuf, dsiz));        tcfree(dbuf);      }      break;    case 25:      iputchar('P');      if(myrand(100) == 0){        if(myrand(2) == 0){          for(int j = 0; j < tclistnum(list); j++){            int rsiz;            tclistval(list, j, &rsiz);            tcptrlistval(ptrlist, j);          }        } else {          for(int j = 0; j < tclistnum(list); j++){            tclistval2(list, j);          }        }      }      break;    case 26:      iputchar('Q');      tcmapput(map, kbuf, ksiz, vbuf, vsiz);      tctreeput(tree, kbuf, ksiz, vbuf, vsiz);      break;    case 27:      iputchar('R');      tcmapput2(map, kbuf, vbuf);      tctreeput2(tree, kbuf, vbuf);      break;    case 28:      iputchar('S');      tcmapputkeep(map, kbuf, ksiz, vbuf, vsiz);      tctreeputkeep(tree, kbuf, ksiz, vbuf, vsiz);      break;    case 29:      iputchar('T');      tcmapputkeep2(map, kbuf, vbuf);      tctreeputkeep2(tree, kbuf, vbuf);      break;    case 30:      iputchar('U');      tcmapputcat(map, kbuf, ksiz, vbuf, vsiz);      tctreeputcat(tree, kbuf, ksiz, vbuf, vsiz);      break;    case 31:      iputchar('V');      tcmapputcat2(map, kbuf, vbuf);      tctreeputcat2(tree, kbuf, vbuf);      break;    case 32:      iputchar('W');      if(myrand(2) == 0){        tcmapput3(map, kbuf, ksiz, vbuf, vsiz);        tctreeput3(tree, kbuf, ksiz, vbuf, vsiz);      }      if(myrand(2) == 0){        tcmapput4(map, kbuf, ksiz, vbuf, vsiz, vbuf, vsiz);        tctreeputkeep3(tree, kbuf, ksiz, vbuf, vsiz);      }      if(myrand(2) == 0){        tcmapputcat3(map, kbuf, ksiz, vbuf, vsiz);        tctreeputcat3(tree, kbuf, ksiz, vbuf, vsiz);      }      break;    case 33:      iputchar('X');      if(myrand(10) == 0){        tcmapout(map, kbuf, ksiz);        tctreeout(tree, kbuf, ksiz);      }      break;    case 34:      iputchar('Y');      if(myrand(10) == 0){        tcmapout2(map, kbuf);        tctreeout2(tree, kbuf);      }      break;    case 35:      iputchar('Z');      tcmapget3(map, kbuf, ksiz, &vsiz);      tctreeget3(tree, kbuf, ksiz, &vsiz);      break;    case 36:      iputchar('a');      tcmapmove(map, kbuf, ksiz, true);      break;    case 37:      iputchar('b');      tcmapmove(map, kbuf, ksiz, false);      break;    case 38:      iputchar('c');      tcmapmove2(map, kbuf, true);      break;    case 39:      iputchar('d');      if(myrand(100) == 0){        tcmapiterinit(map);        if(myrand(2) == 0){          tctreeiterinit(tree);        } else {          tctreeiterinit2(tree, kbuf, ksiz);        }      }      break;    case 40:      iputchar('e');      tcmapiternext(map, &vsiz);      tctreeiternext(tree, &vsiz);      break;    case 41:      iputchar('f');      tcmapiternext2(map);      tctreeiternext2(tree);      break;    case 42:      iputchar('g');      if(myrand(100) == 0){        int anum;        switch(myrand(4)){        case 0:          tclistdel(tcmapkeys(map));          tclistdel(tctreekeys(tree));          break;        case 1:          tcfree(tcmapkeys2(map, &anum));          tcfree(tctreekeys2(tree, &anum));          break;        case 2:          tclistdel(tcmapvals(map));          tclistdel(tctreevals(tree));          break;        default:          tcfree(tcmapvals2(map, &anum));          tcfree(tctreevals2(tree, &anum));          break;        }      }      break;    case 43:      iputchar('h');      if(myrand(rnum / 100 + 1) == 0){        tcmapclear(map);        tctreeclear(tree);      }      break;    case 44:      iputchar('i');      if(myrand(20) == 0){        tcmapcutfront(map, myrand(10));        tctreecutfringe(tree, myrand(10));      }      break;    case 45:      iputchar('j');      if(myrand(rnum / 100 + 1) == 0){        int dsiz;        char *dbuf = tcmapdump(map, &dsiz);        tcfree(tcmaploadone(dbuf, dsiz, kbuf, ksiz, &vsiz));        tcmapdel(tcmapload(dbuf, dsiz));        tcfree(dbuf);        dbuf = tctreedump(tree, &dsiz);        tcfree(tctreeloadone(dbuf, dsiz, kbuf, ksiz, &vsiz));        tctreedel(tctreeload(dbuf, dsiz, tccmplexical, NULL));        tcfree(dbuf);      }      break;    case 46:      iputchar('k');      tcmdbput(mdb, kbuf, ksiz, vbuf, vsiz);      tcndbput(ndb, kbuf, ksiz, vbuf, vsiz);      break;    case 47:      iputchar('l');      tcmdbput2(mdb, kbuf, vbuf);      tcndbput2(ndb, kbuf, vbuf);      break;    case 48:      iputchar('m');      tcmdbputkeep(mdb, kbuf, ksiz, vbuf, vsiz);      tcndbputkeep(ndb, kbuf, ksiz, vbuf, vsiz);      break;    case 49:      iputchar('n');      tcmdbputkeep2(mdb, kbuf, vbuf);      tcndbputkeep2(ndb, kbuf, vbuf);      break;    case 50:      iputchar('o');      tcmdbputcat(mdb, kbuf, ksiz, vbuf, vsiz);      tcndbputcat(ndb, kbuf, ksiz, vbuf, vsiz);      break;    case 51:      iputchar('p');      tcmdbputcat2(mdb, kbuf, vbuf);      tcndbputcat2(ndb, kbuf, vbuf);      break;    case 52:      iputchar('q');      if(myrand(2) == 0){        tcmdbput3(mdb, kbuf, ksiz, vbuf, vsiz);        tcndbput3(ndb, kbuf, ksiz, vbuf, vsiz);      }      if(myrand(2) == 0){        tcmdbput4(mdb, kbuf, ksiz, vbuf, vsiz, vbuf, vsiz);        tcndbputkeep3(ndb, kbuf, ksiz, vbuf, vsiz);      }      if(myrand(2) == 0){        tcmdbputcat3(mdb, kbuf, ksiz, vbuf, vsiz);        tcndbputcat3(ndb, kbuf, ksiz, vbuf, vsiz);      }      break;    case 53:      iputchar('r');      if(myrand(10) == 0){        tcmdbout(mdb, kbuf, ksiz);        tcndbout(ndb, kbuf, ksiz);      }      break;    case 54:      iputchar('s');      if(myrand(10) == 0){        tcmdbout2(mdb, kbuf);        tcndbout2(ndb, kbuf);      }      break;    case 55:      iputchar('t');      tcfree(tcmdbget(mdb, kbuf, ksiz, &vsiz));      tcfree(tcndbget(ndb, kbuf, ksiz, &vsiz));      break;    case 56:      iputchar('u');      tcfree(tcmdbget3(mdb, kbuf, ksiz, &vsiz));      tcfree(tcndbget3(ndb, kbuf, ksiz, &vsiz));      break;    case 57:      iputchar('v');      if(myrand(100) == 0){        tcmdbiterinit(mdb);        if(myrand(2) == 0){          tcndbiterinit(ndb);        } else {          tcndbiterinit2(ndb, kbuf, ksiz);        }      }      break;    case 58:      iputchar('w');      tcfree(tcmdbiternext(mdb, &vsiz));      tcfree(tcndbiternext(ndb, &vsiz));      break;    case 59:      iputchar('x');      tcfree(tcmdbiternext2(mdb));      tcfree(tcndbiternext2(ndb));      break;    case 60:      iputchar('y');      if(myrand(rnum / 100 + 1) == 0){        tcmdbvanish(mdb);        tcndbvanish(ndb);      }      break;    case 61:      iputchar('z');      if(myrand(200) == 0){        tcmdbcutfront(mdb, myrand(100));        tcndbcutfringe(ndb, myrand(100));      }      break;    case 62:      iputchar('+');      if(myrand(200) == 0){        tcmdbforeach(mdb, iterfunc, NULL);        tcndbforeach(ndb, iterfunc, NULL);      }      break;    case 63:      iputchar('+');      if(myrand(100) == 0) tcmpoolmalloc(mpool, 1);      break;    case 64:      iputchar('+');      if(myrand(100) == 0) tcmpoolxstrnew(mpool);      break;    case 65:      iputchar('+');      if(myrand(100) == 0) tcmpoollistnew(mpool);      break;    case 66:      iputchar('+');      if(myrand(100) == 0) tcmpoolmapnew(mpool);      break;    case 67:      iputchar('+');      if(myrand(100) == 0) tcmpooltreenew(mpool);      break;    default:      iputchar('@');      if(myrand(10000) == 0) srand((unsigned int)(tctime() * 1000) % UINT_MAX);      break;    }    if(i % 50 == 0) iprintf(" (%08d)\n", i);  }  if(rnum % 50 > 0) iprintf(" (%08d)\n", rnum);  for(int i = 0; i < tcptrlistnum(ptrlist); i++){    tcfree(tcptrlistval(ptrlist, i));  }  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 + -