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
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
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