CSuffixArray::CSuffixArray(CCharBuffer &text) { LARGE_INTEGER frequency; LARGE_INTEGER t1, t2; QueryPerformanceFrequency(&frequency); printf(" reserving memory for suffixes "); QueryPerformanceCounter(&t1); arr.reserve(text.length()); QueryPerformanceCounter(&t2); printf("%.2lf ms\n", (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart); printf(" adding suffixes "); QueryPerformanceCounter(&t1); for(unsigned int i=0; i<text.length(); i++) arr.push_back(myStr(&text.getBuffer()[i], text.length()-i)); QueryPerformanceCounter(&t2); printf("%.2lf ms\n", (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart); printf(" sorting suffixes "); QueryPerformanceCounter(&t1); std::sort(arr.begin(), arr.end()); QueryPerformanceCounter(&t2); printf("%.2lf ms\n", (t2.QuadPart - t1.QuadPart) * 1000.0 / frequency.QuadPart); }
//向表中插入记录 bool SqliteManager::InsertData(sqlite3* MyDB, string tableName, unordered_map<string, string> paraInfoSTR, unordered_map<string, INT64> paraInfoINT) { string strPara1, strPara2; //字符串类型参数的拼接 unordered_map<string, string>::iterator itor1; for (itor1 = paraInfoSTR.begin(); itor1 != paraInfoSTR.end(); itor1++) { strPara1 += itor1->first + ","; strPara2 += "'" + itor1->second + "',"; } //整型参数的拼接 unordered_map<string, INT64>::iterator itor2; for (itor2 = paraInfoINT.begin(); itor2 != paraInfoINT.end(); itor2++) { strPara1 += itor2->first + ","; char str[50]; sprintf(str, "%d", itor2->second); string myStr(str); strPara2 += myStr + ","; } //去掉最后一个逗号 strPara1.erase(strPara1.size() - 1, 1); strPara2.erase(strPara2.size() - 1, 1); string sqlstr = "insert into " + tableName + " (" + strPara1 + ") values(" + strPara2 + ");";//sql语句 CCLOG(sqlstr.c_str()); //注册超时等待时间为1000ms sqlite3_busy_timeout(MyDB, 1000); //执行 char* errMsg; int result = sqlite3_exec(MyDB, sqlstr.c_str(), NULL, NULL, &errMsg); if (result != SQLITE_OK) { CCLOG("insert error----------%s", errMsg); return false; } return true; }