Mike Faraponov
87d8f4575c
Reduce allocations of buffer for reused readers
2021-03-01 09:42:42 -08:00
Andy Balholm
729edfbcfe
Add documentation link.
...
Fixes #16
2020-08-04 09:53:43 -07:00
oguzyildiz1991
1b06c5640c
Check size of split.lengths instead of a nil check
...
Fixes https://github.com/andybalholm/brotli/issues/14
2020-07-17 09:24:47 -07:00
Andy Balholm
c3da72aa01
Faster bit writing.
...
Replace the functions in write_bits.go with a bitWriter type based on
the compress/flate package.
2020-06-18 18:58:27 -07:00
Andy Balholm
ef7a42160d
Use a 64-bit store in writeBits.
...
This is an optimization that was present in the C version (behind an
ifdef). It gives a nice speed boost to the lower compression levels.
2020-06-06 14:13:21 -07:00
Andy Balholm
097c1c5bc9
Use 32-bit loads in isMatch1 and isMatch5.
2020-05-15 11:17:23 -07:00
Andy Balholm
8f8b18645c
Read multiple bytes in findMatchLengthWithLimit
...
Use 64- or 32-bit loads instead of reading a byte at a time. The
original C source did something like this, in a very C-ish way. It
needed to be simplified to translate it to Go. The exact way this works
was suggested by the assembly code in github.com/golang/snappy.
2020-05-15 10:43:19 -07:00
Erik Dubbelboer
a01a7b12c9
Reuse buffers and objects using sync.Pool
...
This reduces the amount of garbage generated and relieves pressure on
the GC.
For a workload without reusing the Writer (using Writer.Reset) the number of allocations goes from 31 to 9.
While for a workload when you reuse the Writer the number of allocations goes from 25 to 0.
2020-05-10 10:36:19 +02:00
Andy Balholm
e2c5f2109f
Use len and cap instead of num_commands_ and cmd_alloc_size_.
2020-05-08 16:48:16 -07:00
Andy Balholm
4b2775ea5e
Fix some ugly compound literals.
2020-05-08 15:14:47 -07:00
Andy Balholm
b2497e8d72
Revert "Use sort.Sort to sort Huffman trees."
...
This reverts commit 6b5963335e
.
It doesn't really have the performance benefit I thought it did.
2020-05-08 13:52:56 -07:00
Andy Balholm
6b5963335e
Use sort.Sort to sort Huffman trees.
2020-05-07 17:51:21 -07:00
Andy Balholm
7c7a5a10ef
Push output directly to dst instead of buffering.
2020-05-07 17:27:37 -07:00
Andy Balholm
625cbb6f92
Replace storage_size_ with len(storage).
2020-05-07 15:40:58 -07:00
Andy Balholm
f41712f811
Remove unnecessary parameters from encodeData.
...
The pointers passed to out_size and output were always the same,
so there is no need to have them as parameters.
Based on
00ca10b927
and b3ee528567
2020-05-06 17:20:27 -07:00
Andy Balholm
511ca97d30
Benchmark all compression levels.
2020-05-06 16:08:01 -07:00
Andy Balholm
2c14228f02
Preserve w.commands across Reset.
2020-05-05 17:36:16 -07:00
Andy Balholm
cb9be97eb7
Reuse more memory when a Writer is Reset.
2020-05-05 17:18:33 -07:00
Andy Balholm
00ca370ce2
Put full license in bench_test.go
2020-05-05 16:14:45 -07:00
Andy Balholm
3c3658f2fb
A couple of tweaks
2020-05-04 16:09:27 -07:00
Andy Balholm
ac459dee64
Fix excessive allocations if sortHuffmanTreeItems.
...
Fixes #11
2020-05-04 15:04:20 -07:00
Andy Balholm
9fc263f565
Add some benchmarks.
...
These are basically copied from the compress/flate package.
2020-05-04 13:35:04 -07:00
Andy Balholm
b60f0d972e
Copy negotiateContentEncoding.
...
A little copying is better than a little dependency.
Fixes #8
2019-08-21 08:13:43 -07:00
Andy Balholm
ed0fd64940
Fix int overflow in test on 32-bit.
...
On 32-bit systems, the random array indexes were sometimes negative as a
result of converting an int64 to int.
Fixes #7 .
2019-07-25 08:52:43 -07:00
Andy Balholm
71eb68cc46
Preserve compression settings when Writer is reset.
...
Fixes #6
2019-07-04 08:13:24 -07:00
Andy Balholm
5f990b63d2
Add README.
2019-06-21 08:47:22 -07:00
Andy Balholm
5c318f9037
Add HTTPCompressor for HTTP Content-Encoding negotiation.
2019-04-30 14:53:06 -07:00
Andy Balholm
f00818cf36
Fix tests broken by API change.
2019-04-25 09:03:32 -07:00
Andy Balholm
a097b55267
Merge pull request #4 from paolobarbolini/behave-like-compress
...
Make it behave like other compress/ packages
2019-04-25 09:01:22 -07:00
Paolo Barbolini
7ad6b2e5b1
Make brotli behave like official compress/ packages
2019-04-25 17:25:59 +02:00
Andy Balholm
580fdc1cde
Removed unused error
2019-04-25 08:21:22 -07:00
Andy Balholm
1b2ddcf9b7
Merge pull request #2 from shanemhansen/shane-change-struct-scope
...
Lift structs to higher scope
2019-03-29 18:17:44 -04:00
Shane Hansen
f6e5ca9707
gofmt
2019-03-29 15:15:07 -07:00
Shane Hansen
94370e0b46
Lift structs to higher scope
...
Small performance improvement (27%) by re-using search result
structs. Likely the original C version relied on stack allocation here.
2019-03-29 15:12:32 -07:00
Andy Balholm
36f6c9721d
Fix warnings from go vet.
...
FIxes #1
2019-03-26 06:05:46 -04:00
Andy Balholm
45f5d9b05a
Fix negative slice indexes.
2019-03-23 11:17:03 -07:00
Andy Balholm
08371dc992
Use const for constants.
2019-03-21 16:15:39 -07:00
Andy Balholm
52165d4974
Clean up duplicate and misplaced comments.
2019-03-21 15:34:30 -07:00
Andy Balholm
55e85f3f75
Finish un-exporting symbols.
2019-03-15 18:00:20 -07:00
Andy Balholm
4e6528a75b
Remove duplicate kBlockLengthPrefixCode constants.
2019-03-15 17:27:29 -07:00
Andy Balholm
7b66c0a2f2
Un-export some more symbols
2019-03-15 17:24:40 -07:00
Andy Balholm
906c822ef2
Un-export more symbols
2019-03-15 12:05:31 -07:00
Andy Balholm
5001b3d0d7
Start un-exporting names.
2019-03-09 17:11:32 -08:00
Andy Balholm
1ce1c68433
Simplify encoder interface.
2019-03-09 16:06:37 -08:00
Andy Balholm
d6c7de28d1
Simplify encoder interface to match what is used by Write.
2019-03-09 15:57:44 -08:00
Andy Balholm
99596c61a1
Consolidate composite hashes.
2019-03-09 14:01:03 -08:00
Andy Balholm
ba67d8c1de
Consolidate rolling hashes.
2019-03-09 13:54:31 -08:00
Andy Balholm
42dac55258
Consolidate "forgetful chain" hashes.
2019-03-09 13:34:19 -08:00
Andy Balholm
c4f1bfa34f
Start reducing duplication in hasher code.
...
The C version defined several related hasher types with preprocessor
tricks, but I split them up for the translation to Go. Now I'm
recombining them.
2019-03-09 13:01:56 -08:00
Andy Balholm
74ae18c776
Use some Go library functions.
2019-03-08 19:45:16 -08:00