====== LZ4 Java ====== * 고속 압축 알고리즘. JNI 버전이 2014현재 최고 성능을 보이는 것으로 나타남. * [[https://code.google.com/p/lz4/|LZ4 Native]] * [[https://github.com/jpountz/lz4-java|LZ4-Java]] - http://mvnrepository.com/artifact/net.jpountz.lz4/lz4 ===== lz4-java 사용시 주의점 ===== * [[https://lz4.github.io/lz4-java/1.7.1/docs/net/jpountz/lz4/LZ4Factory.html|LZ4Factory]]를 비롯한 객체들은 한 번만 생성해서 공유해서 사용한다. singleton / thread safe함. 그렇지 않으면 성능이 매우 저하된다. * [[https://lz4.github.io/lz4-java/1.7.1/docs/net/jpountz/lz4/LZ4Factory.html#nativeInstance--|LZ4Factory#nativeInstance()]] 의 javadoc 을 잘 읽어야 한다. native instance 는 fastDecompress 가 safeDecompress 보다 오히려 더 느리다.(1.6 이상 버전 기준) * 압축해서 저장할 때 압축을 안한 상태의 용량을 맨 앞 4byte 정도에 할당해서 저장해두면, 압축을 풀때 풀린 용량을 정확히 알기 때문에 fastDecompress 를 할 수 있게 된다. * safeDecompress 는 정확히 압축 푼 용량을 모를 때 사용하며, 이 경우에는 버퍼를 문제 안생길만큼 아주 충분히 잡아서 줘야 한다.