int main(void) { vector<long long> BloomDataAddTime; vector<long long> BloomDataSubTime; vector<unsigned long long> BloomDataSize; std::cout << "ブルームフィルタテスト" << std::endl; std::cout << "測定開始" << std::endl; for (int count = 1; count <= 100; count++) { BloomFilter BF; auto Start = std::chrono::system_clock::now(); for (int i = 0; i < 100; i++) { BF.AddText(to_string(i)); std::cout << BF.GetFilter() << std::endl; } auto End = std::chrono::system_clock::now(); auto Time = End - Start; auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(Time).count(); BloomDataAddTime.push_back(ms); BloomDataSize.push_back(sizeof(BF)); Start = std::chrono::system_clock::now(); for (int i = 0; i < 100; i++) { BF.SubText(to_string(i)); std::cout << BF.GetFilter() << std::endl; } End = std::chrono::system_clock::now(); Time = End - Start; ms = std::chrono::duration_cast<std::chrono::milliseconds>(Time).count(); BloomDataSubTime.push_back(ms); } std::cout << "測定終了" << std::endl; std::cout << "データ追加" << std::endl; std::sort(BloomDataAddTime.begin(), BloomDataAddTime.end()); std::cout << "最低値" << std::endl; std::cout << "AddTime : "<< BloomDataAddTime.front() << std::endl; std::cout << "AddSize : " << BloomDataSize.front() << std::endl; std::cout << "最高値" << std::endl; std::cout << "AddTime : " << BloomDataAddTime.back() << std::endl; std::cout << "AddSize : " << BloomDataSize.back() << std::endl; std::cout << "中央値" << std::endl; if (BloomDataAddTime.size() % 2 == 0) { int pos = BloomDataAddTime.size() / 2; std::cout << "AddTime : " << (BloomDataAddTime[pos] + BloomDataAddTime[pos + 1]) / 2 << std::endl; } else { std::cout << "AddTime : " << BloomDataAddTime[(int)(BloomDataAddTime.size() / 2+1)]<< std::endl; } if (BloomDataSize.size() % 2 == 0) { int pos = BloomDataSize.size() / 2; std::cout << "AddSize : " << (BloomDataSize[pos] + BloomDataSize[pos + 1]) / 2 << std::endl; } else { std::cout << "AddSize : " << BloomDataSize[(int) (BloomDataSize.size() / 2 + 1)] << std::endl; } std::cout << "平均値" << std::endl; long long Average = 0; for (auto Time : BloomDataAddTime) { Average += Time; } std::cout << "AddTime : " << (float) Average / BloomDataAddTime.size() << std::endl; Average = 0; for (auto Time : BloomDataSize) { Average += Time; } std::cout << "データサイズ" << std::endl; std::sort(BloomDataSize.begin(), BloomDataSize.end()); std::cout << "AddSize : " << (float) Average / BloomDataSize.size() << std::endl; std::cout << "データ削除" << std::endl; std::sort(BloomDataSubTime.begin(), BloomDataSubTime.end()); std::cout << "最低値" << std::endl; std::cout << "SubTime : " << BloomDataSubTime.front() << std::endl; std::cout << "最高値" << std::endl; std::cout << "SubTime : " << BloomDataSubTime.back() << std::endl; std::cout << "中央値" << std::endl; if (BloomDataSubTime.size() % 2 == 0) { int pos = BloomDataSubTime.size() / 2; std::cout << "SubTime : " << (BloomDataSubTime[pos] + BloomDataSubTime[pos + 1]) / 2 << std::endl; } else { std::cout << "SubTime : " << BloomDataSubTime[(int) (BloomDataSubTime.size() / 2 + 1)] << std::endl; } std::cout << "平均値" << std::endl; Average = 0; for (auto Time : BloomDataSubTime) { Average += Time; } std::cout << "SubTime : " << (float) Average / BloomDataSubTime.size() << std::endl; std::cout << std::endl; vector<long long> CountingDataAddTime; vector<long long> CountingDataSubTime; vector<unsigned long long> CountingDataSize; std::cout << "カウンティングフィルタテスト" << std::endl; std::cout << "測定開始" << std::endl; for (int count = 1; count <= 100; count++) { CountingFilter CF; auto Start = std::chrono::system_clock::now(); for (int i = 0; i < 100; i++) { CF.AddText(to_string(i)); std::cout << CF.GetFilter() << std::endl; } auto End = std::chrono::system_clock::now(); auto Time = End - Start; auto ms = std::chrono::duration_cast<std::chrono::milliseconds>(Time).count(); CountingDataAddTime.push_back(ms); CountingDataSize.push_back(sizeof(CF)); Start = std::chrono::system_clock::now(); for (int i = 0; i < 100; i++) { CF.SubText(to_string(i)); std::cout << CF.GetFilter() << std::endl; } End = std::chrono::system_clock::now(); Time = End - Start; ms = std::chrono::duration_cast<std::chrono::milliseconds>(Time).count(); CountingDataSubTime.push_back(ms); } std::cout << "測定終了" << std::endl; std::cout << "データ追加" << std::endl; std::sort(CountingDataAddTime.begin(), CountingDataAddTime.end()); std::cout << "最低値" << std::endl; std::cout << "AddTime : " << CountingDataAddTime.front() << std::endl; std::cout << "AddSize : " << CountingDataSize.front() << std::endl; std::cout << "最高値" << std::endl; std::cout << "AddTime : " << CountingDataAddTime.back() << std::endl; std::cout << "AddSize : " << CountingDataSize.back() << std::endl; std::cout << "中央値" << std::endl; if (CountingDataAddTime.size() % 2 == 0) { int pos = CountingDataAddTime.size() / 2; std::cout << "AddTime : " << (CountingDataAddTime[pos] + CountingDataAddTime[pos + 1]) / 2 << std::endl; } else { std::cout << "AddTime : " << CountingDataAddTime[(int) (CountingDataAddTime.size() / 2 + 1)] << std::endl; } if (CountingDataSize.size() % 2 == 0) { int pos = CountingDataSize.size() / 2; std::cout << "AddSize : " << (CountingDataSize[pos] + CountingDataSize[pos + 1]) / 2 << std::endl; } else { std::cout << "AddSize : " << CountingDataSize[(int) (CountingDataSize.size() / 2 + 1)] << std::endl; } std::cout << "平均値" << std::endl; Average = 0; for (auto Time : CountingDataAddTime) { Average += Time; } std::cout << "AddTime : " << (float) Average / CountingDataAddTime.size() << std::endl; Average = 0; for (auto Time : CountingDataSize) { Average += Time; } std::cout << "データサイズ" << std::endl; std::sort(CountingDataSize.begin(), CountingDataSize.end()); std::cout << "AddSize : " << (float) Average / CountingDataSize.size() << std::endl; std::cout << "データ削除" << std::endl; std::sort(CountingDataSubTime.begin(), CountingDataSubTime.end()); std::cout << "最低値" << std::endl; std::cout << "SubTime : " << CountingDataSubTime.front() << std::endl; std::cout << "最高値" << std::endl; std::cout << "SubTime : " << CountingDataSubTime.back() << std::endl; std::cout << "中央値" << std::endl; if (CountingDataSubTime.size() % 2 == 0) { int pos = CountingDataSubTime.size() / 2; std::cout << "SubTime : " << (CountingDataSubTime[pos] + CountingDataSubTime[pos + 1]) / 2 << std::endl; } else { std::cout << "SubTime : " << CountingDataSubTime[(int) (CountingDataSubTime.size() / 2 + 1)] << std::endl; } std::cout << "平均値" << std::endl; Average = 0; for (auto Time : CountingDataSubTime) { Average += Time; } std::cout << "SubTime : " << (float) Average / CountingDataSubTime.size() << std::endl; getchar(); return 0; }