Skip to content

Commit

Permalink
Merge pull request #3 from kneth/insert-ramdomly
Browse files Browse the repository at this point in the history
Insert ramdomly
  • Loading branch information
kspangsege committed Jul 10, 2013
2 parents 85c8ec3 + bbda708 commit fec3866
Showing 1 changed file with 55 additions and 20 deletions.
75 changes: 55 additions & 20 deletions test/benchmark-insert-add/add_insert.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
#include <unistd.h>
#include <time.h>
#include <cstdio>
#include <stdlib.h>

using namespace tightdb;
using namespace std;
Expand Down Expand Up @@ -30,6 +31,7 @@ void usage(void) {
cout << " -n : rows between print outs" << endl;
cout << " -g : use group (default: no)" << endl;
cout << " -r : rows/commit (default: 1)" << endl;
cout << " -R : insert at random position (only useful with -i)" << endl;
exit(-1);
}

Expand All @@ -44,16 +46,20 @@ int main(int argc, char *argv[]) {
int c;
extern char *optarg;

bool use_shared = false;
bool use_shared = false;
SharedGroup::DurabilityLevel dlevel;
bool do_insert = false;
bool use_group = false;
bool do_insert = false;
bool use_group = false;
bool random_insert = false;

while ((c = getopt(argc, argv, "hs:iN:n:r:g")) != EOF) {
while ((c = getopt(argc, argv, "hs:iN:n:r:gR")) != EOF) {
switch (c) {
case 'h':
usage();
break;
case 'R':
random_insert = true;
break;
case 's':
use_shared = true;
if (strcmp(optarg, "mem") == 0) {
Expand Down Expand Up @@ -114,14 +120,20 @@ int main(int argc, char *argv[]) {
cout << "# output frequency : " << n << endl;
cout << "# mode : " << m << endl;
if (do_insert) {
cout << "# do inserts" << endl;
cout << "# do inserts" << endl;
cout << "# random insert : " << random_insert << endl;
}

if (random_insert) { // initialize RNG
srandom(0);
}

File::try_remove("test.tightdb");
File::try_remove("test.tightdb.lock");
File::try_remove("gtest.tightdb");

SharedGroup sg = SharedGroup("test.tightdb", false, dlevel);
Group g("gtest.tightdb", Group::mode_ReadWrite);

switch (m) {
case USE_SHARED:
Expand All @@ -132,8 +144,14 @@ int main(int argc, char *argv[]) {
}
break;
case USE_GROUP:
Group g("gtest.tightdb");
BasicTableRef<TestTable> t = g.get_table<TestTable>("test");
try {
g.commit();
}
catch (std::runtime_error& e) {
cerr << "Cannot create table: " << e.what() << endl;
exit(-1);
}
break;
}

Expand All @@ -146,7 +164,11 @@ int main(int argc, char *argv[]) {
{
for(size_t j=0; j<rows_per_commit; ++j) {
if (do_insert) {
t1->insert(0, N, "Hello", i%2, "World", "Smurf");
size_t k = 0;
if (random_insert && t1->size() > 0) {
k = size_t(random() % t1->size());
}
t1->insert(k, N, "Hello", i%2, "World", "Smurf");
}
else {
t1->add(N, "Hello", i%2, "World", "Smurf");
Expand All @@ -157,27 +179,40 @@ int main(int argc, char *argv[]) {
break;
}
case USE_GROUP: {
{
Group g("gtest.tightdb");
BasicTableRef<TestTable> t1 = g.get_table<TestTable>("test");
for(size_t j=0; j<rows_per_commit; ++j) {
if (do_insert) {
t1->insert(0, N, "Hello", i%2, "World", "Smurf");
}
else {
t1->add(N, "Hello", i%2, "World", "Smurf");
BasicTableRef<TestTable> t1 = g.get_table<TestTable>("test");
for(size_t j=0; j<rows_per_commit; ++j) {
if (do_insert) {
size_t k = 0;
if (random_insert && t1->size() > 0) {
k = size_t(random() % t1->size());
}
t1->insert(k, N, "Hello", i%2, "World", "Smurf");
}
else {
t1->add(N, "Hello", i%2, "World", "Smurf");
}
File::try_remove("tmp.tightdb");
g.write("tmp.tightdb");
}
rename("tmp.tightdb", "gtest.tightdb");
try {
g.commit();
}
catch (File::PermissionDenied& e) {
cerr << "commit (permission denied): " << e.what() << endl;
exit(-1);
}
catch (std::runtime_error& e) {
cerr << "commit (runtime error): " << e.what() << endl;
exit(-1);
}
break;
}
case USE_TABLE:
for(size_t j=0; j<rows_per_commit; ++j) {
if (do_insert) {
t.insert(0, N, "Hello", i%2, "World", "Smurf");
size_t k = 0;
if (random_insert && t.size() > 0) {
k = size_t(random() % t.size());
}
t.insert(k, N, "Hello", i%2, "World", "Smurf");
}
else {
t.add(N, "Hello", i%2, "World", "Smurf");
Expand Down

0 comments on commit fec3866

Please sign in to comment.