Có thư viện nào xác định xem một tập tin có đáng nén trước khi được chuyển không?


0

Tôi đã đọc rằng đôi khi các tệp như .mp3 hoặc hình ảnh nén không đáng nén (ví dụ với zlib) vì chúng đã được nén và chúng sẽ lãng phí nhiều tài nguyên CPU hơn là tiết kiệm dung lượng. Có thư viện nào được đề xuất ngoài đó có thể xác định xem một tệp có đáng nén trước khi được chuyển không?


nếu một tập tin không thể được nén, nó sẽ chỉ lớn hơn một chút so với kích thước ban đầu của nó trong trường hợp xấu nhất, cũng để tìm hiểu xem liệu nó có đáng để nén hay không (yêu cầu) yêu cầu vượt qua nén
ratchet freak

@ratchetfreak Đến điểm đầu tiên của bạn, đó không thực sự là điều tôi đang hỏi. Cố gắng nén một tệp đã nén sẽ làm lãng phí chu kỳ CPU. Tôi đang cố gắng tránh làm như vậy. Bạn đã đề cập đến một nén qua mặc dù, tâm trí chi tiết về điều đó? Tôi giả sử bạn có nghĩa là nó cần phải chạy qua một lượt để xác định xem có đáng để nén không, vì vậy nó sẽ lãng phí tài nguyên theo cách nào?
Chris

2
sau đó là phần thứ hai trong nhận xét của tôi: đánh giá khả năng nén sẽ (đối với thuật toán ngây thơ) yêu cầu vượt qua nén và so sánh kích thước, => endresult là bạn vẫn phải nén tệp
ratchet freak

1
@ratchetfreak Vì vậy, tôi cho rằng, thực tế, cách duy nhất để tiết kiệm bất kỳ lượng tài nguyên nào là kiểm tra phần mở rộng tệp và cho rằng nó sẽ lãng phí (hoặc không) chỉ dựa vào đó ...?
Chris

1
@ratchetfreak, trong hầu hết các trường hợp file(1)sẽ cho bạn biết đủ để biết việc nén có đáng giá mà không cần nén hay không (tùy thuộc vào nội dung tệp).
vonbrand

Câu trả lời:


1

Nén trong các công việc chung bằng cách loại bỏ các cấu trúc dự phòng ra khỏi luồng dữ liệu theo cách có thể đảo ngược.

Một trong những biện pháp bạn có thể sử dụng để tìm ra bao nhiêu ngày có thể được coi là dự phòng là tự tương quan trong đó tín hiệu sẽ càng ít bị nén (ngoại lệ tồn tại tùy thuộc vào thuật toán được sử dụng).

Tuy nhiên, thuật toán thứ tự thấp nhất để tìm tự động tương quan là thứ tự của O(n*log(n)). Tôi tin rằng hầu hết các thuật toán nén là thứ tự O(n)làm cho nó lãng phí khi chạy nó trên các tệp rất dài. (sẽ hiệu quả hơn nếu chỉ thử nén và kiểm tra kích thước tệp)


Bài đăng SO có liên quan cho bất kỳ ai tò mò , xác nhận những gì OP nói ở trên. Mã hóa Huffman và LZW đều chạy O(n)đúng lúc.
Đột phá

0

Trong StoreBackup, bạn có thể xác định quy tắc. Một quy tắc có thể là sự kết hợp của các kiểm tra khác nhau, ví dụ. tùy thuộc vào hậu tố tập tin. Nhưng cũng có một chức năng đặc biệt, COMPRESSION_CHECK, quyết định tùy thuộc vào nội dung của tệp. Sẽ không có ý nghĩa gì khi kiểm tra mọi tệp bằng COMPRESSION_CHECK, do đó bạn có thể xác định ví dụ. như sau

  1. tất cả các tệp kết thúc .jpg và .mp3 không được nén mà không có bất kỳ kiểm tra bổ sung nào
  2. tất cả các tệp kết thúc .doc và .pdf được nén trong mọi trường hợp mà không cần kiểm tra thêm
  3. tất cả các tệp nhỏ hơn 1k không được nén mà không có bất kỳ kiểm tra bổ sung nào
  4. tất cả các tệp khác được kiểm tra với chức năng COMPRESSION_CHECK

Đây là một hành vi được mô tả trong tài liệu tham khảo .

(Bạn có thể ví dụ: cũng xác định các quy tắc bổ sung không bao giờ nén tệp từ một người hoặc nhóm đặc biệt để khôi phục dễ dàng hơn với trình duyệt tệp, nhưng điều đó không liên quan đến câu hỏi của bạn)


Vâng tôi đã thấy rằng, tất cả những gì nó kiểm tra phần mở rộng tập tin và kích thước của tập tin mặc dù. Tôi đã hy vọng cho một cái gì đó công phu hơn.
Chris

Dựa trên câu trả lời của bạn cho @ratchetfreak đó là điều tốt nhất có thể được thực hiện, phải không?
Jasjeev Singh

Rõ ràng, tôi đã ít nhiều tìm kiếm các lựa chọn khác, nếu có tồn tại. Tôi sẽ nâng cấp nếu tôi có thể, nhưng tôi chưa có Đại diện nào trên SuperUser. (Thực sự không hiểu tại sao Rep không chuyển giữa các trang Stack.)
Chris

@Chris khi bạn vượt qua một số rào cản, bạn sẽ nhận được 100 điểm thưởng trên bất kỳ trang web mới nào mà bạn đăng nhập vào
ratchet freak
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.