1
lz4의 작동 방식을 이해하기 위해 link을 조사했습니다. 나는 다음 시험을 썼다. 임의의 데이터 만 있기 때문에 sinInput2를 압축 할 수 없습니다. sinInput1의 크기는 1/8로 줄어 듭니다. 나는 그것의 데이터가 8 개의 다른 블록을 가지고 있기 때문에 이것이라고 생각한다. lz4가 반복되는 부분 문자열을 찾을 수 있다는 것을 의미합니까? 하위 문자열을 찾을 수있는 기간에 제한이 있습니까?lz4가 연속 반복 부분 문자열을 찾을 수 있습니까?
#include <string>
#include <iostream>
#include "lz4.h"
#include <stdio.h> /* printf, NULL */
#include <stdlib.h> /* srand, rand */
#include <time.h> /* time */
#include <math.h>
int main() {
using namespace std;
srand(time(NULL));
double sinInput1[1024];
double sinInput2[1024];
for (int i = 0; i < 1024; ++i) {
sinInput1[i]=sin(i % 128);
sinInput2[i]=sin(i);
}
int inputSize = 1024 * sizeof(double);
cout << "Input size: " << inputSize << endl;
char *compressedData = new char[2 * inputSize];
cout << "Compressed size of sinInput1: " << LZ4_compress_fast((char*)sinInput1, compressedData, inputSize, inputSize*2, 1) << endl;
cout << "Compressed size of sinInput2: " << LZ4_compress_fast((char*)sinInput2, compressedData, inputSize, inputSize*2, 1) << endl;
return 0;
}
Input size: 8192
Compressed size of sinInput1: 1064
Compressed size of sinInput2: 8222