Skip to content

Commit

Permalink
Updated API
Browse files Browse the repository at this point in the history
  • Loading branch information
anuragkh committed May 27, 2016
1 parent 032baf4 commit 0fdd834
Show file tree
Hide file tree
Showing 15 changed files with 221 additions and 263 deletions.
19 changes: 9 additions & 10 deletions bench/include/file_benchmark.h
Original file line number Diff line number Diff line change
Expand Up @@ -265,42 +265,41 @@ class FileBenchmark : public Benchmark {
void BenchmarkCore() {
fprintf(stderr, "Benchmarking Core Functions...\n\n");
fprintf(stderr, "Benchmarking lookupNPA...\n");
BenchmarkLookupFunction(&SuccinctFile::LookupNPA,
succinct_file_->Name() + ".npa");
BenchmarkLookupFunction(&SuccinctFile::LookupNPA, "result.npa");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking lookupSA...\n");
BenchmarkLookupFunction(&SuccinctFile::LookupSA,
succinct_file_->Name() + ".sa");
"result.sa");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking lookupISA...\n");
BenchmarkLookupFunction(&SuccinctFile::LookupISA,
succinct_file_->Name() + ".isa");
"result.isa");
fprintf(stderr, "Done!\n\n");
}

void BenchmarkFile() {
fprintf(stderr, "Benchmarking File Functions...\n\n");
fprintf(stderr, "Benchmarking extract ticks...\n");
BenchmarkExtractTicks(succinct_file_->Name() + ".extract.ticks");
BenchmarkExtractTicks("result.extract.ticks");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking extract...\n");
BenchmarkExtract(succinct_file_->Name() + ".extract");
BenchmarkExtract("result.extract");
fprintf(stderr, "Done!\n\n");
if (queries_.size() == 0) {
fprintf(stderr, "[WARNING]: No queries have been loaded.\n");
fprintf(stderr, "[WARNING]: Skipping count and search benchmarks.\n");
} else {
fprintf(stderr, "Benchmarking count ticks...\n");
BenchmarkCountTicks(succinct_file_->Name() + ".count.ticks");
BenchmarkCountTicks("result.count.ticks");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking search ticks...\n");
BenchmarkSearchTicks(succinct_file_->Name() + ".search.ticks");
BenchmarkSearchTicks("result.search.ticks");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking count...\n");
BenchmarkCount(succinct_file_->Name() + ".count");
BenchmarkCount("result.count");
fprintf(stderr, "Done!\n\n");
fprintf(stderr, "Benchmarking search...\n");
BenchmarkSearch(succinct_file_->Name() + ".search");
BenchmarkSearch("result.search");
fprintf(stderr, "Done!\n\n");
}
}
Expand Down
4 changes: 1 addition & 3 deletions bench/src/file_benchmark.cc
Original file line number Diff line number Diff line change
Expand Up @@ -103,9 +103,7 @@ int main(int argc, char **argv) {
npa_scheme);

// Serialize and save to file
std::ofstream s_out(inputpath + ".succinct");
fd->Serialize();
s_out.close();
fd->Serialize(inputpath + ".succinct");

// Create benchmark
file_bench = new FileBenchmark(fd, querypath);
Expand Down
4 changes: 1 addition & 3 deletions bench/src/regex_benchmark.cc
Original file line number Diff line number Diff line change
Expand Up @@ -111,9 +111,7 @@ int main(int argc, char **argv) {
s_file = new SuccinctFile(filename);

std::cout << "Serializing Succinct data structures...\n";
std::ofstream s_out(filename + ".succinct");
s_file->Serialize();
s_out.close();
s_file->Serialize(filename + ".succinct");
} else {
std::cout << "De-serializing Succinct data structures...\n";
s_file = new SuccinctFile(filename, SuccinctMode::LOAD_IN_MEMORY);
Expand Down
2 changes: 1 addition & 1 deletion bench/src/shard_benchmark.cc
Original file line number Diff line number Diff line change
Expand Up @@ -152,7 +152,7 @@ int main(int argc, char **argv) {
sa_sampling_rate, isa_sampling_rate,
npa_sampling_rate, scheme, scheme, npa_scheme);
// Serialize
fd->Serialize();
fd->Serialize(inputpath + ".succinct");
} else if (mode == 1) {
fprintf(stderr, "SuccinctMode = Load in memory.\n");
fd = new SuccinctShard(0, inputpath, SuccinctMode::LOAD_IN_MEMORY,
Expand Down
50 changes: 37 additions & 13 deletions core/include/succinct_core.h
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ class SuccinctCore : public SuccinctBase {
typedef std::pair<int64_t, int64_t> Range;

/* Constructors */
SuccinctCore(const char *filename, SuccinctMode s_mode =
SuccinctCore(const std::string& filename, SuccinctMode s_mode =
SuccinctMode::CONSTRUCT_IN_MEMORY,
uint32_t sa_sampling_rate = 32, uint32_t isa_sampling_rate = 32,
uint32_t npa_sampling_rate = 128, uint32_t context_len = 3,
Expand All @@ -49,6 +49,15 @@ class SuccinctCore : public SuccinctBase {
NPA::NPAEncodingScheme::ELIAS_GAMMA_ENCODED,
uint32_t sampling_range = 1024);

SuccinctCore() {
this->alphabet_ = NULL;
this->sa_ = NULL;
this->isa_ = NULL;
this->npa_ = NULL;
this->alphabet_size_ = 0;
this->input_size_ = 0;
}

virtual ~SuccinctCore() {
}

Expand All @@ -69,13 +78,13 @@ class SuccinctCore : public SuccinctBase {
char CharAt(uint64_t i);

// Serialize succinct data structures
virtual size_t Serialize();
virtual size_t Serialize(const std::string& filename);

// Deserialize succinct data structures
virtual size_t Deserialize();
virtual size_t Deserialize(const std::string& filename);

// Memory map succinct data structures
virtual size_t MemoryMap();
virtual size_t MemoryMap(const std::string& filename);

// Get size of original input
uint64_t GetOriginalSize();
Expand Down Expand Up @@ -108,9 +117,31 @@ class SuccinctCore : public SuccinctBase {

protected:

// Allocates high level containers
void Allocate(uint32_t sa_sampling_rate, uint32_t isa_sampling_rate,
uint32_t npa_sampling_rate, uint32_t context_len,
SamplingScheme sa_sampling_scheme,
SamplingScheme isa_sampling_scheme,
NPA::NPAEncodingScheme npa_encoding_scheme,
uint32_t sampling_range);

// Constructs the core data structures
void Construct(const std::string& filename, uint32_t sa_sampling_rate,
uint32_t isa_sampling_rate, uint32_t npa_sampling_rate,
uint32_t context_len, SamplingScheme sa_sampling_scheme,
SamplingScheme isa_sampling_scheme,
NPA::NPAEncodingScheme npa_encoding_scheme,
uint32_t sampling_range);

// Constructs the core data structures
void Construct(uint8_t* input, size_t input_size, uint32_t sa_sampling_rate,
uint32_t isa_sampling_rate, uint32_t npa_sampling_rate,
uint32_t context_len, SamplingScheme sa_sampling_scheme,
SamplingScheme isa_sampling_scheme,
NPA::NPAEncodingScheme npa_encoding_scheme,
uint32_t sampling_range);

/* Metadata */
std::string filename_; // Name of input file
std::string succinct_path_; // Name of succinct path
uint64_t input_size_; // Size of input

/* Primary data structures */
Expand All @@ -124,13 +155,6 @@ class SuccinctCore : public SuccinctBase {
uint32_t alphabet_size_; // Size of the input alphabet_

private:
// Constructs the core data structures
void Construct(const char* filename, uint32_t sa_sampling_rate,
uint32_t isa_sampling_rate, uint32_t npa_sampling_rate,
uint32_t context_len, SamplingScheme sa_sampling_scheme,
SamplingScheme isa_sampling_scheme,
NPA::NPAEncodingScheme npa_encoding_scheme,
uint32_t sampling_range);

uint64_t ComputeContextValue(char* data, uint32_t i, uint32_t context_len) {
uint64_t val = 0;
Expand Down
8 changes: 0 additions & 8 deletions core/include/succinct_file.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,11 +24,6 @@ class SuccinctFile : public SuccinctCore {
NPA::NPAEncodingScheme::ELIAS_GAMMA_ENCODED,
uint32_t context_len = 3, uint32_t sampling_range = 1024);

/*
* Get the name of the SuccinctFile
*/
std::string Name();

/*
* Random access into the Succinct file with the specified offset
* and length
Expand Down Expand Up @@ -56,9 +51,6 @@ class SuccinctFile : public SuccinctCore {
std::pair<int64_t, int64_t> GetRange(const char *str, uint64_t len);
uint64_t ComputeContextValue(const char *str, uint64_t pos);

std::string input_filename_;
std::string succinct_filename_;

};

#endif
16 changes: 10 additions & 6 deletions core/include/succinct_shard.h
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,12 @@ class SuccinctShard : public SuccinctCore {
NPA::NPAEncodingScheme::ELIAS_GAMMA_ENCODED,
uint32_t context_len = 3, uint32_t sampling_range = 1024);

SuccinctShard()
: SuccinctCore() {
id_ = 0;
invalid_offsets_ = NULL;
}

virtual ~SuccinctShard() {
}

Expand All @@ -45,11 +51,9 @@ class SuccinctShard : public SuccinctCore {

uint32_t GetNPASamplingRate();

std::string Name();

size_t GetNumKeys();

void Get(std::string& result, int64_t key);
virtual void Get(std::string& result, int64_t key);

void Access(std::string& result, int64_t key, int32_t offset, int32_t len);

Expand All @@ -69,13 +73,13 @@ class SuccinctShard : public SuccinctCore {
void RegexCount(std::vector<size_t>& result, const std::string& str);

// Serialize succinct data structures
virtual size_t Serialize();
virtual size_t Serialize(const std::string& path);

// Deserialize succinct data structures
virtual size_t Deserialize();
virtual size_t Deserialize(const std::string& path);

// Memory map succinct data structures
virtual size_t MemoryMap();
virtual size_t MemoryMap(const std::string& path);

// Get succinct shard size
virtual size_t StorageSize();
Expand Down
Loading

0 comments on commit 0fdd834

Please sign in to comment.