네트워크를 통해 보내려는 텍스트 파일이 있는데이 파일의 크기는 1KB에서 500KB까지 다양합니다.
파일을 보내기 전에 단단히 압축하여 네트워크를 통해 전송되는 바이트 수가 가장 적고 압축률이 높을 수있는 알고리즘/기법은 무엇입니까?높은 압축률의 네트워크를 통해 텍스트 파일 보내기
답변
, 나는 (이 목록은 완전하지 않은 그러나 이러한 IMO 가장 유명한) gzip을, 레스 햇의 bzip2와 LZMA를 생각 하는데요.
그런 다음 인터넷에서 일부 벤치 마크를 찾아 다양한 파일 형식 (텍스트, 이진, 혼합) 및 크기 (작음, 큰, 거대)에 대한 메트릭을 수집하려고합니다. 대부분 압축 비율에 관심이 있더라도 압축 비율, 압축 시간, 메모리 사용 공간, 압축 해제 시간을 볼 수 있습니다. A Quick Benchmark: Gzip vs. Bzip2 vs. LZMA 따르면
:
[...] GZIP가 매우 빠르고, 작은 메모리 풋 프린트를 갖는다. 이 벤치 마크에 따르면 bzip2와 lzma는 속도 나 메모리 사용면에서 gzip과 경쟁 할 수 없습니다. bzip2는 gzip보다 압축률이 월등히 뛰어나므로 bzip2의 인기가 높아야합니다. 특히 감압에서 gzip보다 느리고 더 많은 메모리를 사용합니다. 그러나 bzip2의 메모리 요구 사항은 요즘에는 오래된 하드웨어에서도 문제가되지 않습니다.
[...]
LZMA 명확 유닉스 용 시스템에서 일반적으로 사용되는 세번째 일반 purporse 압축 형식이 될 가능성이있다. gzip에 비해 상대적으로 압축 해제 속도를 유지하면서 압축률이 현저하게 향상되어 bzip2와 경쟁합니다.
이
는 LZMA - better than bzip2에서 확인된다 GZIP 이 38 %를 달성 할 때의 bzip2 34 가장 압축 레벨 (- 향상된 압축비 :
설명은 에서 짧은 인상적 %, LZMA는 25 %).
- 압축 비율은에 주로 이 표시됩니다.
- 압축 해제 시간이 bzip2보다 훨씬 빠릅니다 (3-4 회).
- 알고리즘을 병렬로 실행할 수 있습니다 (단, 여기에서 설명 할 도구 은 하나의 스레드입니다).
- 압축 (낮은 수준 제외)의 bzip2보다 훨씬 느립니다 :
는 단점도있다.
- 압축시 메모리 요구 사항이 bzip2보다 훨씬 큽니다.
그래서, 텍스트 파일, 같은 사이트 보고서의 압축 : I가 LZMA를 사용
우선 내 메일 아카이브를 압축 했다. 내가 선택한 파일 (mbox 형식의 메일)은 크기가 528MB이며 최대 압축 비율은 입니다. 압축 도중 lzma 프로세스는 370MB가 크고, 그것은 입니다. :) bzip2는 7MB 미만이었습니다. 을 lzma로 압축하는 데 약 15 분이 걸렸으며 4 분 미만인 bzip2로 압축하는 데 걸렸습니다. 압축 배급은 매우 유사 : 출력 파일은 bzip2의 경우 373MB이고 lzma의 경우 370MB입니다. 감압 시간은 lzma 의 경우 1m12s이고 bzip2의 경우 1m48s입니다. Compression Tools: lzma, bzip2 & gzip
정말 자신의 벤치를 수행하는 것이 좋습니다 것입니다 (텍스트를 압축 할 수 있습니다로하는 것은 단지 작은 파일에 아주 작은) 실제 얻을 :
마지막으로, 여기에 그래픽 결과와 다른 자원이다 메트릭을 귀하의 환경에서하지만 내 내기를 LZMA
작은 텍스트 파일에 상당한 이점을 제공하지 것입니다 그래서 괜찮은 선택이 될 경우에도 (시간 및 메모리 오버 헤드가 LZMA
작은 파일에 낮은 수 있습니다).
자바에서 압축을 수행하려는 경우, 당신은 LZMA
구현 here (아파치 개미 AFAIK에서 오는)는 bzip2의 구현 here, gzip
를 찾을 수는 JDK에 포함된다. 타사 라이브러리를 사용하고 싶지 않거나 신뢰할 수 없으면 gzip을 사용하십시오.
답변 내용은 내용에 따라 다릅니다. GZip은 jdk에 포함되어 있습니다. 임의의 문자열에 대한 테스트는 평균 33 %의 크기 감소를 나타냅니다.
[편집 : 내용이 아닌 컨텍스트] 압축
GZIP 브라우저가 종속적입니까? 여기서는 원격 서블릿과 대화하는 자체 자바 클라이언트 만 브라우저를 사용하지 않습니다. –
Java에 기능이 내장되어 있습니다 (Jar 파일 때문에). 항상 사용할 수 있어야합니다. –
표준 기능입니다. http://java.sun.com/javase/6/docs/api/java/util/zip/package-summary.html을 참조하십시오. – alphazero
에 달려 있습니다. 네트워크 패킷 크기를 제어 할 수 있습니까? 1 개 이상이 패킷에 들어 맞으면 묶으시겠습니까? 양쪽 끝에서 CPU에 의해 제한됩니까? 실제로 질문은 아니지만 바이트와 시간을 압축하는 데 압축 시간이 더 걸릴 수 있으므로 & 압축을 해제해야합니다.
- 1. 네트워크를 통해 파일 전송
- 2. 네트워크를 통해 사용자 지정 특성을 사용하여 파일 보내기
- 3. 네트워크를 통해 Linux 서버에 쉘 명령 보내기
- 4. 손상된 네트워크를 통해 JMS 메시지 보내기
- 5. 네트워크를 통해 파일 복사 (인증 필요)
- 6. GData로 네트워크를 통해 XML 파일 파싱
- 7. 파이썬 - 암호화 - 네트워크를 통해 암호화 된 데이터 보내기
- 8. RTP를 통해 MP3 파일 보내기
- 9. 웹 서비스를 통해 파일 보내기
- 10. NSOutputStream을 사용하여 iPhone에 오디오 녹음 및 네트워크를 통해 보내기
- 11. 네트워크를 통해 ArrayList 보내기 - Java ArrayList를 XML 문자열로 변환
- 12. Perl을 사용하여 직렬 포트를 통해 텍스트 파일 보내기
- 13. VBScript 중요도가 높은 이메일 보내기
- 14. 네트워크를 통해 java.lang.reflect.Proxy를 전송하십시오.
- 15. 네트워크를 통해 정보 전송
- 16. 리눅스에서 (네트워크를 통해) Windows에서
- 17. 네트워크를 통해 파일에 액세스하는 방법
- 18. .NET에서 소켓을 통해 일반 텍스트 보내기
- 19. Java에서 네트워크를 통해 압축 및 전송 하시겠습니까?
- 20. 클라이언트에게 파일 보내기
- 21. tcp 연결을 통해 큰 파일 보내기
- 22. 소켓 perl을 통해 파일 보내기 (이미지)
- 23. java에서 .net으로 웹 서비스를 통해 파일 보내기
- 24. Windows에서 우분투로 xml 파일 보내기
- 25. IIS7 네트워크를 통해 공유에 쓰기
- 26. Windows에서 네트워크를 통해 드라이버와 통신
- 27. C# 네트워크를 통해 개체를 보내시겠습니까?
- 28. 네트워크를 통해 파일보기 : ~의 의미
- 29. 네트워크를 통해 뉴런 칩 프로그래밍하기
- 30. 네트워크를 통해 Windows 서비스 쿼리
당신은 압축하는 동안 스트림 압축을 원하십니까? 아니면 압축하고, 보내고, 수신하고, 압축을 풀고, 처리 할 시간이 걸립니까? –