Commit Graph

  • 14bef66290 Modernize memcpy() and memmove() usage. Victor Costan 2020-04-12 00:01:01 +00:00
  • d674348a0c Improve zippy with 5-10%. Snappy Team 2020-03-31 02:46:46 +00:00
  • 4dfcad9f4e assertion failure on darwin_x86_64, have to investigage Snappy Team 2020-03-27 23:17:50 +00:00
  • e19178748f assertion failure on darwin_x86_64, have to investigage Snappy Team 2020-03-27 16:35:10 +00:00
  • 0faf56378e This cl does two things 1) It shaves of a few cycles from the data dependency chain. By using "shrd" instead of a load. 2) The important loop is finding small copies (4-12) which are either "copy 1", or "copy 2" depending if the offset fits <2048. It turns out that this is a branch that is mispredicted often. Due to the long dependency chain the CPU is running with IPC~1 anyway so we can freely add instructions to instead emit copies branchfree. This reduces the branch misspredicts from 15% to 11% (for BM_ZFlat/6 txt1) and from 5.6% to 4% (for BM_ZFlat/10 or pb). Snappy Team 2020-03-27 14:57:37 +00:00
  • 0c7ed08a25 The result on protobuf benchmark is around 19%. Results vary by their propensity for compression. As the frequency of finding matches influences the amount of branch misspredicts and the amount of hashing. Snappy Team 2020-03-25 15:24:14 +00:00
  • 3c77e01459 1) Make the output pointer a local variable such it doesn't need a load add store on it's loop carried dependency chain. 2) Reduce the input pointer loop carried dependency chain from 7 cycles to 4 cycles by using pre-loading. This is a very subtle point. 3) Just brutally copy 64 bytes which removes a difficult to predict branch from the inner most loop. There is enough bandwidth to do so in the intrinsic cycles of the loop. 4) Implement limit pointers that include the slop region. This removes unnecessary instructions from the hot path. 5) It seems the removal of the difficult to predict branch has removed the code sensitivity to alignment, so remove the asm nop's. Snappy Team 2020-02-12 18:04:58 +00:00
  • 9eabb7baba Cut a load from the critical dependency chain of the input pointer by speculating the uncommon case of COPY_4 is not happening. Snappy Team 2020-02-07 14:38:49 +00:00
  • cddd9c0875 Improve comments in IncrementalCopy, add an assert. Snappy Team 2020-01-31 09:44:03 +00:00
  • 537f4ad624 Tag open source release 1.1.8. Victor Costan 2020-01-14 10:05:25 -08:00
  • b5477a8457 Optimize IncrementalCopy: There are between 1 and 4 copy iterations. Allow FDO to work with full knowledge of the probabilities for each branch. Snappy Team 2020-01-10 07:41:30 -08:00
  • f5acee902c Move CI to Visual Studio 2019. Victor Costan 2019-11-11 11:58:12 -08:00
  • 26410cc4f8 Merge pull request #85 from bitomaxsp:patch-1 Victor Costan 2019-11-10 14:10:50 -08:00
  • 0eec45ed16 Align CMake configuration with related projects. Victor Costan 2019-11-07 21:38:01 -08:00
  • 6617df53fa Remove redundant PROJECT_SOURCE_DIR usage from CMake config. Victor Costan 2019-11-05 15:13:05 -08:00
  • f48c38f91a Fix one forgotten instance of StringPrintf -> StrFormat. Victor Costan 2019-11-04 00:06:23 -08:00
  • c9212708b2 Fix build errors. Victor Costan 2019-11-03 23:22:24 -08:00
  • eb2eb73e6b Test CMake installation on Travis. Victor Costan 2019-11-03 21:37:17 -08:00
  • 8f32e3fbc0 Internal changes Snappy Team 2019-10-30 12:02:30 -07:00
  • 38945971d6 Allow build with different standard if lib used as a subproject Dmitry 2019-10-17 14:17:49 +02:00
  • e9e11b84e6 Fix Travis CI build. Victor Costan 2019-09-29 20:32:50 -07:00
  • 9dabbca006 Remove snappy::string alias to std::string. Victor Costan 2019-09-27 17:13:37 -07:00
  • 62363d9a79 Fully qualify std::string. Victor Costan 2019-09-26 10:47:14 -07:00
  • d837d5cfe1 Merge pull request #80 from tmm1:patch-2 Victor Costan 2019-08-21 09:11:03 -07:00
  • 44d84addf2 Fix benchmarks. Victor Costan 2019-08-20 17:08:45 -07:00
  • c6bf1170d8 Fix benchmarks. Victor Costan 2019-08-20 11:01:22 -07:00
  • 6219c7787b Fix unused variable warnings in fuzzers. Victor Costan 2019-08-20 07:14:07 -07:00
  • 5a57d32566 Rename zippy_*_fuzzer.cc -> snappy_*_fuzzer.cc. Victor Costan 2019-08-19 23:23:23 -07:00
  • fd79e6f9b2 Merge pull request #78 from bshastry:libfuzzer-harness Victor Costan 2019-08-19 14:30:12 -07:00
  • 4c7f2d5dfb Add BM_ZFlatAll, BM_ZFlatIncreasingTableSize benchmarks to see how good zippy performs when it is processing different data one after the other. Shahriar Rouf 2019-07-10 17:38:22 -07:00
  • a58d4b03c5 Update travis config for fuzzer builds Bhargava Shastry 2019-07-27 10:57:49 +02:00
  • d926a6bcb5 Updated to match .gitignore from google/leveldb Aman Gupta 2019-07-20 12:49:48 -07:00
  • 6662dfb5d4 Create .gitignore Aman Gupta 2019-07-13 13:08:35 -07:00
  • d71375bf8a Add libFuzzer harnesses, a cmake option to build them Bhargava Shastry 2019-06-28 20:49:35 +02:00
  • 156cd8939c Removed reference to deprecated autotools. Chris Mumford 2019-06-13 16:24:20 -07:00
  • fe702ad2a3 Use GCC 9 on Travis CI Victor Costan 2019-05-25 14:34:40 -07:00
  • a3e012d762 The snappy landing page at http://google.github.io/snappy/ is served by [GitHub Pages](https://pages.github.com/) and lives in the gh-pages branch. This changes moves the page contents to a more easily accessed Markdown file. Chris Mumford 2019-05-16 11:07:39 -07:00
  • 4312f49315 Merge pull request #75 from Maikuolan:patch-1 Chris Mumford 2019-05-16 11:11:20 -07:00
  • 407712f4c9 Merge pull request #76 from abyss7:patch-1 Chris Mumford 2019-05-14 14:27:56 -07:00
  • 8c188a6c78 Minor typo fix in README. Chris Mumford 2019-05-14 10:57:51 -07:00
  • c76b053449 Sync TODO and comment processing with external repo. Chris Mumford 2019-05-13 09:30:17 -07:00
  • 54b6379e9f Changed CMake version from 3.4 to that in CMakeLists.txt in README. Chris Mumford 2019-05-09 13:27:02 -07:00
  • 0af4349bf0 Update Travis CI configuration. Victor Costan 2019-04-29 15:10:15 -07:00
  • 877cc86f0e Fixed formatted (bash/c++) sections of README.md. Chris Mumford 2019-04-22 11:16:39 -07:00
  • 02cf187555 Remove MSan exemption for _bzhi_u32, since LLVM now handles it correctly. atdt 2019-04-04 08:17:45 -07:00
  • be831dc98c Fix compilation Ivan 2019-04-25 18:44:08 +03:00
  • d58cd618be Remove MSBuild section from AppVeyor configuration. costan 2019-02-15 09:00:14 -08:00
  • c197d686a9 Optimize snappy compression by about 2.2%. nafi 2019-01-22 12:50:51 -08:00
  • 3f194acb57 Convert DCHECK to assert. costan 2019-01-08 13:26:32 -08:00
  • 97a20b480f Reduce the LeftShiftOverflows() table size. costan 2019-01-08 11:31:10 -08:00
  • 4f0adca400 Wrap BMI2 instruction usage in support checks. costan 2019-01-08 06:06:34 -08:00
  • 46768e335d Optimize decompression by about 0.82%. nafi 2019-01-07 16:52:08 -08:00
  • fdba21ffd6 Fix typo in two argument names in stubs. costan 2019-01-06 13:06:38 -08:00
  • 81d444e4e4 Remove direct use of _builtin_clz. costan 2019-01-06 11:48:31 -08:00
  • 9a6fa91217 Remove use of std::uniform_distribution<uint8_t>. costan 2019-01-06 11:47:58 -08:00
  • 3fcbc47f99 Use std random number generators in tests. costan 2019-01-04 14:35:15 -08:00
  • 925c3094c4 Convert DCHECK to assert. costan 2019-01-03 20:39:15 -08:00
  • 02de4ff1d1 Update Travis CI configuration. costan 2019-01-02 17:51:12 -08:00
  • f7aece15e2 Add comment explaining MSan false-positive workaround atdt 2018-12-15 01:23:22 -08:00
  • 5913c5f8e4 Don't use _bzhi_u32 under MSan atdt 2018-12-13 17:20:06 -08:00
  • 136b3ebc31 If BMI instructions are available, use BZHI to extract low bytes. atdt 2018-12-12 07:14:02 -08:00
  • eb47f79631 Optimize by about 0.5%. nafi 2018-12-03 17:27:56 -08:00
  • 254966c71e Migrate to use absl::random jueminyang 2018-11-06 13:12:05 -08:00
  • 53a38e5e33 Reduce number of allocations when compressing and simplify the code. alkis 2018-10-16 12:28:52 -07:00
  • df5548c0b3 Use sized deallocation when releasing Zippy's scratch buffers. ckennelly 2018-10-15 13:26:59 -07:00
  • 1b7466e143 Compute the wordmask instead of looking it up in a table. alkis 2018-08-28 08:47:31 -07:00
  • a866f7181c Update README to use HTTPS instead of HTTP. Caleb Mazalevskis 2018-12-14 17:12:32 +08:00
  • ea660b57d6 Fix unused private field warning in NDEBUG builds. costan 2018-08-17 12:02:02 -07:00
  • 7fefd231a1 C++11 guarantees <cstddef> and <cstdint>. costan 2018-08-16 10:44:34 -07:00
  • db082d2cd6 Remove GCC on OSX from the Travis CI matrix. costan 2018-08-16 10:17:06 -07:00
  • ad82620f6f Move pshufb_fill_patterns from snappy-internal.h to snappy.cc. costan 2018-08-09 10:58:55 -07:00
  • 73c31e824c Fix Visual Studio build. costan 2018-08-08 14:41:36 -07:00
  • 27ff0af12a Improve performance of zippy decompression to IOVecs by up to almost 50% jefflim 2018-08-07 18:39:54 -07:00
  • 4ffb0e62c5 Update Travis CI configuration. costan 2018-08-06 12:58:32 -07:00
  • be490ef9ec Test for SSE3 suppport before using pshufb. atdt 2018-03-27 01:33:58 -07:00
  • 8f469d97e2 Avoid store-forwarding stalls in Zippy's IncrementalCopy atdt 2018-03-26 21:55:23 -07:00
  • 4f7bd2dbfd Update CI configurations. costan 2018-03-09 07:42:50 -08:00
  • ca37ab7fb9 Ensure DecompressAllTags starts on a 32-byte boundary + 16 bytes. jgorbe 2018-02-02 18:38:30 -08:00
  • 15a2804cd2 Fix an incorrect analysis / comment in the "pattern doubling" code. scrubbed 2018-01-16 13:39:18 -08:00
  • e69d9f8806 Fix Travis CI configuration for OSX. costan 2018-01-04 14:26:40 -08:00
  • 4aba5426d4 Rework a very hot, very sensitive part of snappy to reduce the number of instructions, the number of dynamic branches, and avoid a particular loop structure than LLVM has a very hard time optimizing for this particular case. chandlerc 2017-12-21 20:51:07 -08:00
  • 26102a0c66 Fix generated version number in open source release. costan 2017-12-20 13:08:59 -08:00
  • b02bfa754e Tag open source release 1.1.7. costan 2017-08-24 12:35:03 -07:00
  • 824e6718b5 Add a loop alignment directive to work around a performance regression. wmi 2017-08-21 15:33:39 -07:00
  • 55924d1109 Add GNUInstallDirs to CMake configuration. costan 2017-08-16 18:46:27 -07:00
  • 632cd0f128 Use 64-bit optimized code path for ARM64. costan 2017-08-16 12:38:06 -07:00
  • 77c12adc19 Add unistd.h checks back to the CMake build. costan 2017-08-02 09:43:03 -07:00
  • c8049c5827 Replace getpagesize() with sysconf(_SC_PAGESIZE). costan 2017-08-01 13:18:55 -07:00
  • 18e2f220d8 Add guidelines for opensource contributions. costan 2017-08-01 11:36:14 -07:00
  • f0d3237c32 Use _BitScanForward and _BitScanReverse on MSVC. costan 2017-08-01 10:01:27 -07:00
  • 71b8f86887 Add SNAPPY_ prefix to PREDICT_{TRUE,FALSE} macros. jueminyang 2017-07-28 14:31:04 -07:00
  • be6dc3db83 Redo CMake configuration. costan 2017-07-28 09:55:21 -07:00
  • e4de6ce087 Small improvements to open source CI configuration. costan 2017-07-27 16:34:19 -07:00
  • c756f7f5d9 Support both static and shared library CMake builds. costan 2017-07-27 16:31:00 -07:00
  • 038a3329b1 Inline DISALLOW_COPY_AND_ASSIGN. costan 2017-07-26 10:08:17 -07:00
  • a8b239c3de snappy: Remove autoconf build configuration. costan 2017-07-25 14:47:14 -07:00
  • 27671c6aec Clean up CMake header and type checks. costan 2017-07-25 14:45:04 -07:00
  • 548501c988 zippy: Re-release snappy 1.1.5 as 1.1.6. costan 2017-07-13 03:13:54 -07:00
  • 513df5fb5a Tag open source release 1.1.5. costan 2017-06-28 14:23:16 -07:00
  • 5bc9c82ae3 Set minimum CMake version to 3.1. costan 2017-06-27 12:23:33 -07:00