update
This commit is contained in:
parent
d6e8cc5f0c
commit
5d4131067b
@ -317,7 +317,7 @@ void ZSTD_compressBlock_opt2_generic(ZSTD_CCtx* ctx,
|
|||||||
U32 maxNbAttempts, U32 matchLengthSearch);
|
U32 maxNbAttempts, U32 matchLengthSearch);
|
||||||
searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
|
searchMax_f searchMax = searchMethod ? ZSTD_BtFindBestMatch_selectMLS : ZSTD_HcFindBestMatch_selectMLS;
|
||||||
|
|
||||||
#if 0
|
#if 0
|
||||||
typedef size_t (*getAllMatches_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
|
typedef size_t (*getAllMatches_f)(ZSTD_CCtx* zc, const BYTE* ip, const BYTE* iLimit,
|
||||||
U32 maxNbAttempts, U32 matchLengthSearch, LZ5HC_match_t* matches);
|
U32 maxNbAttempts, U32 matchLengthSearch, LZ5HC_match_t* matches);
|
||||||
getAllMatches_f getAllMatches = searchMethod ? ZSTD_BtGetAllMatches_selectMLS : ZSTD_HcGetAllMatches_selectMLS;
|
getAllMatches_f getAllMatches = searchMethod ? ZSTD_BtGetAllMatches_selectMLS : ZSTD_HcGetAllMatches_selectMLS;
|
||||||
@ -335,7 +335,7 @@ void ZSTD_compressBlock_opt2_generic(ZSTD_CCtx* ctx,
|
|||||||
size_t offset=0;
|
size_t offset=0;
|
||||||
const BYTE* start=ip+1;
|
const BYTE* start=ip+1;
|
||||||
|
|
||||||
//#define ZSTD_USE_REP
|
#define ZSTD_USE_REP
|
||||||
#ifdef ZSTD_USE_REP
|
#ifdef ZSTD_USE_REP
|
||||||
/* check repCode */
|
/* check repCode */
|
||||||
if (MEM_read32(start) == MEM_read32(start - offset_1)) {
|
if (MEM_read32(start) == MEM_read32(start - offset_1)) {
|
||||||
@ -395,6 +395,9 @@ void ZSTD_compressBlock_opt2_generic(ZSTD_CCtx* ctx,
|
|||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
/* store sequence */
|
||||||
|
_storeSequence:
|
||||||
|
|
||||||
/* catch up */
|
/* catch up */
|
||||||
if (offset) {
|
if (offset) {
|
||||||
while ((start>anchor) && (start>base+offset) && (start[-1] == start[-1-offset])) /* only search for offset within prefix */
|
while ((start>anchor) && (start>base+offset) && (start[-1] == start[-1-offset])) /* only search for offset within prefix */
|
||||||
@ -402,8 +405,6 @@ void ZSTD_compressBlock_opt2_generic(ZSTD_CCtx* ctx,
|
|||||||
offset_2 = offset_1; offset_1 = offset;
|
offset_2 = offset_1; offset_1 = offset;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* store sequence */
|
|
||||||
_storeSequence:
|
|
||||||
{
|
{
|
||||||
size_t litLength = start - anchor;
|
size_t litLength = start - anchor;
|
||||||
LZ5_LOG_ENCODE("%d/%d: ENCODE literals=%d off=%d mlen=%d\n", (int)(ip-base), (int)(iend-base), (int)(litLength), (int)(offset), (int)matchLength);
|
LZ5_LOG_ENCODE("%d/%d: ENCODE literals=%d off=%d mlen=%d\n", (int)(ip-base), (int)(iend-base), (int)(litLength), (int)(offset), (int)matchLength);
|
||||||
@ -499,14 +500,14 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
|
|||||||
|
|
||||||
LZ5_LOG_PARSER("%d: start try REP rep=%d mlen=%d\n", (int)(ip-base), (int)rep_1, (int)mlen);
|
LZ5_LOG_PARSER("%d: start try REP rep=%d mlen=%d\n", (int)(ip-base), (int)rep_1, (int)mlen);
|
||||||
if (depth==0 || mlen > sufficient_len || mlen >= LZ5_OPT_NUM) {
|
if (depth==0 || mlen > sufficient_len || mlen >= LZ5_OPT_NUM) {
|
||||||
ip++; best_mlen = mlen; best_off = 0; cur = 0; last_pos = 1;
|
ip+=cur; best_mlen = mlen; best_off = 0; cur = 0; last_pos = 1;
|
||||||
goto _storeSequence;
|
goto _storeSequence;
|
||||||
}
|
}
|
||||||
|
|
||||||
do
|
do
|
||||||
{
|
{
|
||||||
litlen = 0;
|
litlen = 0;
|
||||||
price = LZ5HC_get_price(llen, 0, mlen - MINMATCH) - LZ5_LIT_COST(llen);
|
price = LZ5HC_get_price(llen + cur, 0, mlen - MINMATCH) - LZ5_LIT_COST(llen + cur);
|
||||||
if (mlen + cur > last_pos || price < opt[mlen + cur].price)
|
if (mlen + cur > last_pos || price < opt[mlen + cur].price)
|
||||||
SET_PRICE(mlen + cur, mlen, 0, litlen, price);
|
SET_PRICE(mlen + cur, mlen, 0, litlen, price);
|
||||||
mlen--;
|
mlen--;
|
||||||
@ -624,7 +625,7 @@ void ZSTD_compressBlock_opt_generic(ZSTD_CCtx* ctx,
|
|||||||
|
|
||||||
LZ5_LOG_PARSER("%d: CURRENT price[%d/%d]=%d off=%d mlen=%d litlen=%d rep=%d\n", (int)(inr-base), cur, last_pos, opt[cur].price, opt[cur].off, opt[cur].mlen, opt[cur].litlen, opt[cur].rep);
|
LZ5_LOG_PARSER("%d: CURRENT price[%d/%d]=%d off=%d mlen=%d litlen=%d rep=%d\n", (int)(inr-base), cur, last_pos, opt[cur].price, opt[cur].off, opt[cur].mlen, opt[cur].litlen, opt[cur].rep);
|
||||||
|
|
||||||
#ifdef ZSTD_USE_REP
|
#if 0
|
||||||
// check rep
|
// check rep
|
||||||
// best_mlen = 0;
|
// best_mlen = 0;
|
||||||
mlen = ZSTD_count(inr, inr - opt[cur].rep, iend);
|
mlen = ZSTD_count(inr, inr - opt[cur].rep, iend);
|
||||||
@ -888,13 +889,21 @@ _storeSequence: // cur, last_pos, best_mlen, best_off have to be set
|
|||||||
anchor = ip = ip + mlen;
|
anchor = ip = ip + mlen;
|
||||||
|
|
||||||
if (offset)
|
if (offset)
|
||||||
rep_2 = rep_1, rep_1 = offset;
|
{
|
||||||
|
rep_2 = rep_1;
|
||||||
|
rep_1 = offset;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* best_off = rep_2;
|
||||||
|
rep_2 = rep_1;
|
||||||
|
rep_1 = best_off;*/
|
||||||
|
}
|
||||||
LZ5_LOG_PARSER("%d: offset=%d rep=%d\n", (int)(ip-base), (int)offset, (int)rep_1);
|
LZ5_LOG_PARSER("%d: offset=%d rep=%d\n", (int)(ip-base), (int)offset, (int)rep_1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#ifdef ZSTD_USE_REP
|
#if 0
|
||||||
// check immediate repcode
|
// check immediate repcode
|
||||||
while ( (ip <= ilimit)
|
while ( (ip <= ilimit)
|
||||||
&& (MEM_read32(ip) == MEM_read32(ip - rep_2)) ) {
|
&& (MEM_read32(ip) == MEM_read32(ip - rep_2)) ) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user