Nick Terrell
f2d6db45cd
[zstd] Add -Wmissing-prototypes
2018-09-27 15:24:48 -07:00
Yann Collet
6e66bbf5dd
fixed several minor issues detected by scan-build
...
only notable one :
writeNCount() resists better vs invalid distributions
(though it should never happen within zstd anyway)
2018-08-14 16:55:35 -07:00
W. Felix Handte
3e91dc4d6a
Add Repcode Bounds Check
2018-06-21 15:54:41 -04:00
W. Felix Handte
5bd3d4b7d2
Add Debug Log Statement
2018-06-21 15:54:07 -04:00
W. Felix Handte
3caba150c6
Fix dmsBtLow
Test
2018-06-21 15:53:40 -04:00
W. Felix Handte
5da9bbc38e
Conceivably Dedup ZSTD_noDict and ZSTD_dictMatchState _insertBt1 Impls
...
By reverting to the bool extDict flag, we call ZSTD_insertBt1 with the same
const args in both non-extDict dictModes.
2018-06-21 11:20:01 -04:00
W. Felix Handte
5d81f71e83
Consistency in Guarding DMS-Only Variable Initializations
2018-06-20 16:54:53 -04:00
W. Felix Handte
9c14eafe3d
Also Use matchLow
for HC3 Match
2018-06-20 15:51:14 -04:00
W. Felix Handte
0a6cf7cd1d
Minor Changes
2018-06-20 15:27:23 -04:00
W. Felix Handte
ae1f3898a2
Remove Dead(!) HC3 DMS Lookup
2018-06-20 15:27:12 -04:00
W. Felix Handte
03c39c540b
Fix Incorrect Param
2018-06-19 15:36:33 -04:00
W. Felix Handte
f0a13bcd68
Make Sure Position 0 Gets Into the Tree
2018-06-19 15:10:06 -04:00
W. Felix Handte
87fe4788a3
Fix Compression Ratio Regression #1
2018-06-19 13:01:21 -04:00
W. Felix Handte
4bb79f9c55
Misc Changes
2018-06-19 13:01:21 -04:00
W. Felix Handte
2091f34e9e
Find Proper Matches
2018-06-19 13:01:21 -04:00
W. Felix Handte
64348a15f1
Misc Fixes
2018-06-19 13:01:21 -04:00
W. Felix Handte
ade8586ce6
Find mls == 3
Matches
2018-06-19 13:01:21 -04:00
W. Felix Handte
ce743312e2
Fix Typo
2018-06-19 13:01:21 -04:00
W. Felix Handte
a075864756
Switch != ZSTD_extDict
to == ZSTD_noDict
2018-06-19 13:01:21 -04:00
W. Felix Handte
1e03377bde
Implement RepCode Check
2018-06-19 13:01:21 -04:00
W. Felix Handte
ccbf067973
Add _dictMatchState Functions
2018-06-19 13:01:21 -04:00
W. Felix Handte
d5d8240967
Convert extDict
Flag to dictMode
Enum
2018-06-19 13:01:21 -04:00
Yann Collet
2d76defbfe
grouped all histogram functions into hist.c
...
renamed functions with HIST_* prefix
2018-06-13 19:49:31 -04:00
Yann Collet
809f2f9322
minor update of literal cost function
...
just assert() there is no negative cost evaluation for literals
2018-05-29 15:34:50 -07:00
Yann Collet
463a0fe38b
simplified optimal parser
...
removed "cached" structure.
prices are now saved in the optimal table.
Primarily done for simplification.
Might improve speed by a little.
But actually, and surprisingly, also improves ratio in some circumstances.
2018-05-29 14:07:25 -07:00
Yann Collet
e2c0e3d437
slightly nudge choices towards less sequences
...
also slightly improve some strange detrimental corner cases.
2018-05-25 14:52:21 -07:00
Yann Collet
f6ad59ab5c
Merge branch 'dev' into staticDictCost
2018-05-24 16:21:02 -07:00
Nick Terrell
e3959d5eba
Fixes
2018-05-22 16:06:33 -07:00
Yann Collet
a8ddf1d370
disable 2-passes strategy
2018-05-22 15:06:36 -07:00
Yann Collet
5cbef6e094
Merge branch 'dev' into staticDictCost
2018-05-18 16:03:06 -07:00
Yann Collet
a95e9e80d1
adding some debug functions to observe statistics
2018-05-18 14:09:42 -07:00
Yann Collet
af3da079d1
fixed minor conversion warning
2018-05-17 17:27:27 -07:00
Yann Collet
8572b4d09f
fixed a pretty complex bug when combining ldm + btultra
2018-05-17 16:13:53 -07:00
Yann Collet
134388ba6b
collect statistics for first block in ultra mode
...
this patch makes btultra do 2 passes on the first block,
the first one being dedicated to collecting statistics
so that the 2nd pass is more accurate.
It translates into a very small compression ratio gain :
enwik7, level 20:
blocks 4K : 2.142 -> 2.153
blocks 16K : 2.447 -> 2.457
blocks 64K : 2.716 -> 2.726
On the other hand, the cpu cost is doubled.
The trade off looks bad.
Though, that's ultimately a price to pay to reach better compression ratio.
So it's only enabled when setting btultra.
2018-05-17 12:24:30 -07:00
Yann Collet
a243020d37
slightly improved weight calculation
...
translating into a tiny compression ratio improvement
2018-05-17 11:19:44 -07:00
Yann Collet
18fc3d3cd5
introduced bit-fractional cost evaluation
...
this improves compression ratio by a *tiny* amount.
It also reduces speed by a small amount.
Consequently, bit-fractional evaluation is only turned on for btultra.
2018-05-16 14:53:35 -07:00
Nick Terrell
30d9c84b1a
Fix failing Travis tests
2018-05-15 09:46:20 -07:00
Yann Collet
2c26df0e13
opt: removed static prices
...
after testing, it's actually always better to use dynamic prices
albeit initialised from dictionary.
2018-05-14 18:04:08 -07:00
Yann Collet
761758982e
replaced FSE_count by FSE_count_simple
...
to reduce usage of stack memory.
Also : tweaked a few comments, as suggested by @terrelln
2018-05-11 16:03:37 -07:00
Yann Collet
09d0fa29ee
minor adjusting of weights
2018-05-10 18:13:48 -07:00
Yann Collet
1a26ec6e8d
opt: init statistics from dictionary
...
instead of starting from fake "default" statistics.
2018-05-10 17:59:12 -07:00
Yann Collet
74b1c75d64
btopt : minor adjustment of update frequencies
2018-05-10 16:32:36 -07:00
Yann Collet
ac6105463a
opt: minor improvements to log traces
...
slight improvement when using fractional-bit evaluation (opt:dictionay)
2018-05-09 15:46:11 -07:00
Yann Collet
c39061cb7b
fixed declaration-after-statement warning
2018-05-09 12:07:25 -07:00
Yann Collet
c0da0f5e9e
switchable bit-approximation / fractional-bit accuracy modes
...
also : makes it possible to select nb of fractional bits.
2018-05-09 10:48:09 -07:00
Yann Collet
ba2ad9b6b9
implemented fractional bit cost evaluation
...
for FSE symbols.
While it seems to work, the gains are negligible compared to rough maxNbBits evaluation.
There are even a few losses sometimes, that still need to be explained.
Furthermode, there are still cases where btlazy2 does a better job than btopt,
which seems rather strange too.
2018-05-08 17:43:13 -07:00
Yann Collet
1aff63b114
opt: shift all costs by 8 bits (* 256)
...
making it possible to represent fractional bit costs.
2018-05-08 16:19:04 -07:00
Yann Collet
6a3c34aa58
opt: estimate cost of both Hufman and FSE symbols
...
For FSE symbols : provide an upper bound,
in nb of bits,
since cost function is not able to store fractional bit costs.
2018-05-08 16:11:21 -07:00
Yann Collet
338f738c24
pass entropy tables to optimal parser
...
for proper estimation of symbol's weights
when using dictionary compression.
Note : using only huffman costs is not good enough,
presumably because sequence symbol costs are incorrect.
2018-05-08 15:37:06 -07:00
Yann Collet
a155061328
minor code refactor for readability
...
removed some useless operations from optimal parser
(should not change performance, too small a difference)
2018-05-08 12:32:44 -07:00