Permalink
Commits on May 14, 2015
  1. Renamed version in benchmarks.

    committed May 14, 2015
Commits on May 11, 2015
  1. Updated documentation.

    committed May 11, 2015
Commits on Apr 10, 2015
  1. Added benchmark programs.

    committed Apr 10, 2015
Commits on Apr 8, 2015
  1. Fixed typos.

    committed Apr 8, 2015
Commits on Apr 6, 2015
  1. Made the check on the checksum of EntryHeader optional.

    The check on the EntryHeader CRC8 was changed to be made only if
    the local ReadOptions object has 'verify_checksums' set to true.
    committed Apr 6, 2015
  2. Removed logging print.

    committed Apr 6, 2015
Commits on Apr 5, 2015
Commits on Mar 31, 2015
  1. Added example user program.

    committed Mar 31, 2015
  2. Updated documentation.

    committed Mar 31, 2015
Commits on Mar 29, 2015
  1. Fixed bug in the MultipartReader.

    Fixed a bug that prevented single part entries from being retrieved
    properly. Also added a new unit test to make sure that this use case
    will always be verified in the future.
    committed Mar 29, 2015
  2. Added new method to generate the parameter list in markdown format.

    This new method can generate the same list as the previous usage method
    except that it's now in markdown format and can be directly used in
    the documentation.
    committed Mar 29, 2015
Commits on Mar 28, 2015
  1. Major API Cleanup.

    - Direct std::string usage now works for Get(), Put() and Delete().
    - Fixed a lot of 'std::string' into 'const std::string'.
    - Created helper methods to create ByteArray instances, so users don't
      have to type "ByteArray::" all the time.
    - The multipart API now accepts std::string as a key.
    committed Mar 28, 2015
  2. Updated Readme file.

    committed Mar 28, 2015
Commits on Mar 25, 2015
  1. Renamed 'Chunk' into 'Part'.

    committed Mar 25, 2015
  2. Optimized checksum calculation, bringing a 3x speed-up for the writes.

    I am so happy this is finally fixed! There used to be only one checksum
    field in the EntryHeader, that was guarding both the header and the data
    of an entry. But because of the multipart API, there were cases were the
    compressed sized of a entry was not known until the very last part was
    received, forcing the EntryHeader to be written again. Because computing
    the checksum for the data is better done on the fly (so that the data is
    not read another time just to compute the checksum), I was doing the
    full checksum computation as such:
    
    1. Compute the checksum for the data on the fly, checksum_content.
    2. Compute the checksum for the header once all fields are known,
       checksum_header.
    3. Call crc32c::Combine() on checksum_content and checksum_header to
       combine both checksums.
    
    When the entry would be later read, the checksum was calculated for the
    header and data at the same time, which was possible because of the call
    to crc32c::Combine() during the write. But this came with a huge
    downside: Combine() is extremely slow. Actually, after doing some
    profiling, I found out that when doing writes, 40% of the CPU time was
    spent on Combine(). I then decided to fix the problem, by adding a new
    field to the EntryHeader, to embed only the checksum for the header
    itself in a CRC8, and use the previously used checksum field only for
    the entry data (key and value). And this tiny change brought a 3x
    speed-up for the writes. This is much more than the 40% of CPU time
    recovered, and I believe is due to the fact that the Combine() was just
    killing all the caching in the CPU.
    committed Mar 25, 2015
Commits on Mar 22, 2015
  1. Fixed bug in forced compaction.

    - Changed the final condition for the forced compaction.
    - Fixed the way the forced compaction works, and made sure that that the
      Compaction() method does not return until it has completed the forced
      compaction.
    - Added parameter to force compaction at regular interval.
    committed Mar 22, 2015
Commits on Mar 19, 2015