#include <sys/time.h>
#include <time.h>
+static struct timeval t1;
+static struct timeval t2;
+
+#define STARTTIMER() (gettimeofday(&t1,NULL))
+#define STOPTIMER() (gettimeofday(&t2,NULL))
+#define GETTIME() (((t2.tv_sec - t1.tv_sec) * 1000000.0 + (t2.tv_usec - t1.tv_usec))/1000.0)
+
+
#include "TextCollection.h"
using SXSI::TextCollection;
string buffer;
unsigned int max_str = 0;
unsigned int num_str = 0;
- struct timeval t1;
- struct timeval t2;
double time;
string words[] = { "abcd", "abc", "mirrors", "attires", "mature",
TextCollection *csa = TextCollection::InitTextCollection(64);
- gettimeofday(&t1,NULL);
+ STARTTIMER();
std::cerr << "Filling collection\n";
+ // read only 100000 strings
while (not(cin.eof()) && num_str < 100000 ){
getline(cin,str); // Read line by line.
if (str.compare("----------") == 0){
csa->InsertText((unsigned char*) buffer.c_str());
if (num_str % 10000 == 0){
- gettimeofday(&t2,NULL);
- time = ((t2.tv_sec - t1.tv_sec) * 1000000.0
- + (t2.tv_usec - t1.tv_usec))/1000.0;
- std::cerr << "Added " << num_str << " strings in "
- << time << " ms\n";
- gettimeofday(&t1,NULL);
+ STOPTIMER();
+ time = GETTIME();
+ std::cerr << "Added " << num_str << " strings in "
+ << time << " ms\n";
+ STARTTIMER();
};
num_str++;
buffer.append(str);
};
std::cerr << "Calling MakeStatic()\n";
+
csa->MakeStatic();
+
std::cerr << "Statistics: " << num_str << " strings, " << max_str << " = max length\n";
int count;
bool is;
TextCollection::document_result res;
- for (int i = 0; i < 14; i++){
- gettimeofday(&t1,NULL);
+ for (unsigned int i = 0; i < (sizeof(words)/sizeof(char*)) ; i++){
+
+ STARTTIMER();
is = csa->IsContains((unsigned char*) words[i].c_str());
- gettimeofday(&t2,NULL);
- time = ((t2.tv_sec - t1.tv_sec) * 1000000.0
- + (t2.tv_usec - t1.tv_usec))/1000.0;
+ STOPTIMER();
+ time = GETTIME();
std::cerr << is << ", " << time << ", ";
- gettimeofday(&t1,NULL);
+ STARTTIMER();
count = csa->Count((unsigned char*) words[i].c_str());
- gettimeofday(&t2,NULL);
- time = ((t2.tv_sec - t1.tv_sec) * 1000000.0
- + (t2.tv_usec - t1.tv_usec))/1000.0;
+ STOPTIMER();
+ time = GETTIME();
std::cerr << count << ", " << time << ", ";
- gettimeofday(&t1,NULL);
+
+ STARTTIMER();
count = csa->CountContains((unsigned char*) words[i].c_str());
- gettimeofday(&t2,NULL);
- time = ((t2.tv_sec - t1.tv_sec) * 1000000.0
- + (t2.tv_usec - t1.tv_usec))/1000.0;
+ STOPTIMER();
+ time = GETTIME();
std::cerr << count << ", " << time << ", ";
- gettimeofday(&t1,NULL);
+ STARTTIMER();
res = csa->Contains((unsigned char*) words[i].c_str());
- gettimeofday(&t2,NULL);
- time = ((t2.tv_sec - t1.tv_sec) * 1000000.0
- + (t2.tv_usec - t1.tv_usec))/1000.0;
+ STOPTIMER();
+ time = GETTIME();
std::cerr << time << "\n";
-
};