Đây có thể là thời gian tìm kiếm đĩa là yếu tố hạn chế (đây là một trong những nút cổ chai phổ biến nhất khi thực hiện Make, thường bao gồm nhiều tệp nhỏ). Thiết kế hệ thống tập tin câm có một mục nhập thư mục và nhấn mạnh vào một con trỏ đến các khối đĩa cho một tập tin, và rằng người bảo đảm tối thiểu là 1 tìm kiếm cho mỗi tập tin.
Nếu bạn đang sử dụng Windows, tôi sẽ chuyển sang sử dụng NTFS (lưu trữ các tệp nhỏ trong mục mục nhập thư mục (-> lưu một đĩa tìm kiếm trên mỗi tệp). nhưng CPU có giá rẻ và nhanh nhưng không gian đĩa ít hơn -> ít thời gian đọc hơn), điều này có thể không liên quan nếu tệp của bạn nhỏ, có thể có một hệ thống tệp Linux tương đương, nếu đó là vị trí của bạn.
Yes , bạn nên khởi chạy một loạt chủ đề để đọc các tệp:
forall filename in list: fork(open filename, process file, close filename)
Bạn có thể phải điều tiết để ngăn chặn ru nning ra khỏi chủ đề, nhưng tôi muốn bắn cho hàng trăm không 2 hoặc 3. Nếu bạn làm điều đó, bạn đang nói với hệ điều hành rằng nó có thể đọc rất nhiều nơi trên đĩa, và nó có thể đặt nhiều yêu cầu bằng cách đặt vị trí đĩa (elevator algorithm), và điều đó cũng sẽ giúp giảm thiểu chuyển động đầu.
Nguồn
2010-07-08 16:51:59
Phần nào mất nhiều thời gian nhất? Đang tải các tệp hoặc xử lý chúng? –
@NickLarsen: Đang tải tệp. – Tim
Ngay cả khi tải chúng mất nhiều thời gian nhất, đa luồng vẫn có thể cung cấp cho bạn mức tăng, vì nó có thể ít nhất loại bỏ hầu hết các khía cạnh xử lý khỏi tổng thời gian chạy. –