Skip to content

Instantly share code, notes, and snippets.

@pauljurczak
Created November 20, 2015 19:20
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pauljurczak/7aee33de59b551ad9033 to your computer and use it in GitHub Desktop.
Save pauljurczak/7aee33de59b551ad9033 to your computer and use it in GitHub Desktop.
int setIntersectionBenchmark()
{
const int nBags = 1000;
const int maxBagLength = 10;
vector<set<int>> bags;
ifstream input("10000ran.dat"); // http://www.agner.org/random/10000ran.zip
int similarity = 0;
bags.reserve(nBags);
for (int iBag = 0; iBag < nBags; ++iBag) {
bags.push_back(set<int>());
for (int j = 0; j < maxBagLength; ++j) {
string number;
getline(input, number, ',');
bags.back().insert(round(atof(number.c_str())*maxBagLength));
}
}
for (int i = 0; i < bags.size(); ++i)
for (int j = i+1; j < bags.size(); ++j) {
set<int> intersec;
set_intersection(bags[i].begin(), bags[i].end(), bags[j].begin(), bags[j].end(), inserter(intersec, intersec.begin()));
similarity += intersec.size();
}
return similarity;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment