Điều gì sẽ nhanh hơn, chuyển một tệp nén vào ổ đĩa flash sau đó giải nén ở đó hoặc chuyển các tệp đã giải nén?


2

Cân nhắc thời gian cần thiết để giải nén các thư mục zip sau khi được sao chép vào ổ đĩa flash, cái gì sẽ nhanh hơn? Sao chép các thư mục đã nén vào ổ flash USB sau đó giải nén chúng trên ổ flash hoặc chỉ sao chép các thư mục không nén vào ổ flash.

Đừng xem xét thời gian cần thiết để nén các tệp vì các tệp đã được nén trước khi sao chép. Tôi có thể sao chép từ USB HDD hoặc từ SSD sang ổ flash USB (cả hai đều hỗ trợ USB 3.0).

Trong trường hợp cụ thể này, tôi muốn chuyển 9 tệp zip có tổng số 115.518 tệp, hầu hết các tệp là các tệp hình ảnh thực sự nhỏ (9 tệp có tổng số lượng là 15Gb không nén và 10 Gb được nén).


2
SATA3 nhanh hơn đáng kể so với USB 3. Tuy nhiên, tốc độ Đọc và Ghi nhanh hơn trên Flash. Nó hoàn toàn phụ thuộc vào kho lưu trữ
Ramhound

1
Hãy thử nó trên phần cứng của bạn và tìm hiểu?
Andrew Henle

1
Có quá nhiều biến ở đây để tìm hiểu. Giải nén ZIP khá nhanh trên các CPU hiện đại, do đó, đọc một lượng nhỏ dữ liệu và giải nén sẽ nhanh hơn đọc một lượng lớn dữ liệu không nén. (Trên các máy tính rất cũ, trước năm 1995, điều đó không nhất thiết đúng do CPU chậm bị chậm khi giải nén.) Vì vậy, sử dụng tệp ZIP sẽ tiết kiệm thời gian. Nó sẽ tiết kiệm nhiều thời gian hơn bạn phải làm thêm một bản sao? Rằng tôi không sẵn sàng biết điều đó. Tốc độ phần cứng có thể là một yếu tố quan trọng trong những tính toán đó. Tốc độ của bạn cũng vậy .
TUYỆT VỜI

2
Cách nhanh nhất rõ ràng là rời khỏi tệp ZIP mọi lúc mọi nơi và giải nén nó trực tiếp đến đích cuối cùng. // Hãy nhớ rằng exFAT là siêu khủng khiếp với các tệp nhỏ.
Daniel B

Câu trả lời:


2

Cân nhắc thời gian cần thiết để giải nén các thư mục zip sau khi được sao chép vào ổ đĩa flash, cái gì sẽ nhanh hơn? Sao chép các thư mục đã nén vào ổ flash USB sau đó giải nén chúng trên ổ flash hoặc chỉ sao chép các thư mục không nén vào ổ flash.

Có lẽ là cái sau.

Hãy nhớ rằng giải nén và những thứ khác được thực hiện bởi CPU của máy tính. Bạn có thể sao chép dữ liệu vào một ổ đĩa (có thể là flash hoặc HDD) và bạn có thể sao chép dữ liệu ra, nhưng bạn không thể nói chính ổ đĩa đó giải nén nó - hoặc thực sự làm bất cứ điều gì khác.

Vì vậy, kế hoạch đầu tiên của bạn sẽ liên quan đến:

  1. Sao chép 10 GB dữ liệu từ đĩa sang flash
  2. Đọc 10 GB trở lại từ flash sang RAM
  3. Giải nén nó
  4. Ghi 15 GB dữ liệu được giải nén từ RAM sang flash
  5. Xóa các tệp nén vô dụng còn lại sau bước 1

Thư hai:

  1. Đọc 10 GB trực tiếp từ đĩa trong đến RAM
  2. Giải nén nó
  3. Ghi 15 GB dữ liệu giải nén vào flash

Lưu ý cách kế hoạch đầu tiên liên quan đến việc đọc và viết nhiều gấp đôi. Nhưng không chỉ có vậy: trong thực tế, các bước 2-3-4 sẽ không xảy ra theo thứ tự mà là song song - giúp quá trình nhanh hơn khi đọc từ ổ này và ghi sang ổ khác, nhưng chậm hơn nhiều khi cùng một ổ đĩa thực hiện cả hai lần đọc và viết.


Cả hai gói đều không liên quan đến việc đưa toàn bộ 10 GB vào bộ nhớ trong một mâm cặp lớn, nó sẽ được thực hiện trong các phần nhỏ hơn, ngay cả khi bạn có 10 GB bộ nhớ (cách duy nhất là không xảy ra nếu bạn có 10 GB Các tệp nén trong chính kho lưu trữ. Các chương trình nén khá hiệu quả.
Ramhound

@Ramhound Tuy nhiên, không có cấu hình nào có thể cho bất kỳ ổ đĩa nào time(Writing_seq + Reading_seq + Writing_rand) < time(Writing_rand). Đó là: miễn là các ổ đĩa không hoạt động tốt hơn thì càng có nhiều nhiệm vụ phải chạy đồng thời. Các tệp kết quả có kích thước 15 GB trong cả hai cấu hình - chỉ một lần duy nhất, chúng được sao chép ngay lập tức, trong khi đó, bạn lại ghi và đọc 9GB tệp tuần tự.
flolilo

1

Điều gì sẽ nhanh hơn, chuyển một tệp nén vào ổ đĩa flash sau đó giải nén ở đó hoặc chuyển các tệp đã giải nén?

Không nghi ngờ gì, câu trả lời đúng là "chuyển các tập tin chưa được nén" .

Tất nhiên việc chuyển một kho lưu trữ được nén của tất cả các tệp sẽ nhanh hơn, nhưng bạn đã quy định bước bổ sung "sau đó giải nén ở đó" .

Rõ ràng bạn không biết rằng bạn không thể "giải nén" cục bộ trên ổ đĩa hoặc thiết bị lưu trữ.
Tệp lưu trữ nguồn phải được đọc (từ nơi được lưu trữ) và sau đó giải nén sẽ được CPU thực hiện trong bộ nhớ chính.

Vì vậy, để giải nén tệp đã được chuyển sang ổ flash, tệp phải được đọc từ ổ flash, không nén, và sau đó các tệp riêng lẻ được ghi vào ổ flash.

Đó là bước cuối cùng (viết các tệp riêng lẻ) tương đương với lựa chọn sau. Vì vậy, các bước bổ sung đầu tiên ghi (các) tệp zip và sau đó đọc lại chúng (nhưng có thể được tối ưu hóa bằng bộ đệm) sẽ khiến lựa chọn đầu tiên của bạn hoạt động lâu hơn.



Một cách khác để xem xét câu hỏi của bạn là giả định một số lượng đồng thời giữa các hoạt động và đoán theo thời gian.

Vì vậy, đối với trường hợp 1, việc sao chép tệp zip vào ổ flash yêu cầu các thao tác đọc đồng thời với thao tác ghi (nhưng với một số độ trễ khối).
Viết cũng đòi hỏi nhiều thời gian để thực hiện hơn đọc (ví dụ: xem Tại sao việc sao chép cùng một lượng dữ liệu sẽ mất nhiều thời gian hơn nếu trải rộng trên nhiều tệp riêng biệt? ).
Sau khi sao chép xong, nó có thể được đọc, giải nén và ghi lại vào ổ đĩa flash.
Bất chấp sự đồng thời của các hoạt động đọc, giải nén và viết, dòng thời gian tổng thể bị chi phối bởi thời gian để ghi tất cả các tệp không nén.

RRRRRRRRR  
 WWWWWWWWWW  
           rrr    rrr   rrr  
            DDDD   DDDD  DDDDD
              WWWWWWWWWWWWWWWWWWWWW  
time-->

Trường hợp 2 là một cách đọc, giải nén và viết đơn giản.
Trường hợp này cần cùng một lượng thời gian để ghi tất cả các tệp không nén.

RRR    RRR   RRR  
 DDDD   DDDD  DDDDD
   WWWWWWWWWWWWWWWWWWWWW

Làm thế nào bạn có thể mong đợi Trường hợp 1 hoàn thành nhanh hơn Trường hợp 2 khi giai đoạn đầu tiên của hoạt động đọc là cho cùng một lượng dữ liệu từ cùng một thiết bị và giai đoạn ghi cuối cùng là cho cùng một lượng dữ liệu cho cùng một thiết bị

trường hợp 1 bị tàn tật do trước tiên phải thực hiện một bản sao?


0

Nếu bạn muốn giải nén vào cùng một ổ đĩa - đừng bận tâm đến việc nén. Nếu bạn sẽ giải nén sang ổ đĩa khác - hãy xem xét việc nén, vì nó sẽ thực hiện ít cuộc gọi IO hơn cho hệ thống tệp (ít dữ liệu hơn và ít thực thể tệp hơn)

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.