diff options
author | gabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529> | 2011-06-22 02:36:45 +0000 |
---|---|---|
committer | gabor@google.com <gabor@google.com@62dab493-f737-651d-591e-8d6aee1b9529> | 2011-06-22 02:36:45 +0000 |
commit | ccf0fcd5c2946f9228068d657a56d91af9671575 (patch) | |
tree | 876b8a3e734972320aced5f0b33bf8bc34c5f101 /port | |
parent | 80e5b0d944b7651046f8b0e795065eca02a01e59 (diff) | |
download | leveldb-ccf0fcd5c2946f9228068d657a56d91af9671575.tar.gz |
A number of smaller fixes and performance improvements:
- Implemented Get() directly instead of building on top of a full
merging iterator stack. This speeds up the "readrandom" benchmark
by up to 15-30%.
- Fixed an opensource compilation problem.
Added --db=<name> flag to control where the database is placed.
- Automatically compact a file when we have done enough
overlapping seeks to that file.
- Fixed a performance bug where we would read from at least one
file in a level even if none of the files overlapped the key
being read.
- Makefile fix for Mac OSX installations that have XCode 4 without XCode 3.
- Unified the two occurrences of binary search in a file-list
into one routine.
- Found and fixed a bug where we would unnecessarily search the
last file when looking for a key larger than all data in the
level.
- A fix to avoid the need for trivial move compactions and
therefore gets rid of two out of five syncs in "fillseq".
- Removed the MANIFEST file write when switching to a new
memtable/log-file for a 10-20% improvement on fill speed on ext4.
- Adding a SNAPPY setting in the Makefile for folks who have
Snappy installed. Snappy compresses values and speeds up writes.
git-svn-id: https://leveldb.googlecode.com/svn/trunk@32 62dab493-f737-651d-591e-8d6aee1b9529
Diffstat (limited to 'port')
-rw-r--r-- | port/port_posix.h | 22 |
1 files changed, 20 insertions, 2 deletions
diff --git a/port/port_posix.h b/port/port_posix.h index c158db1..d0b0615 100644 --- a/port/port_posix.h +++ b/port/port_posix.h @@ -9,6 +9,9 @@ #include <endian.h> #include <pthread.h> +#ifdef SNAPPY +#include <snappy.h> +#endif #include <stdint.h> #include <string> #include <cstdatomic> @@ -72,15 +75,30 @@ class AtomicPointer { } }; -// TODO(gabor): Implement actual compress inline bool Snappy_Compress(const char* input, size_t input_length, std::string* output) { +#ifdef SNAPPY + output->resize(snappy::MaxCompressedLength(input_length)); + size_t outlen; + snappy::RawCompress(input, input_length, &(*output)[0], &outlen); + output->resize(outlen); + return true; +#endif + return false; } -// TODO(gabor): Implement actual uncompress inline bool Snappy_Uncompress(const char* input_data, size_t input_length, std::string* output) { +#ifdef SNAPPY + size_t ulength; + if (!snappy::GetUncompressedLength(input_data, ulength, &ulength)) { + return false; + } + output->resize(ulength); + return snappy::RawUncompress(input_data, input_length, &(*output)[0]); +#endif + return false; } |