Tôi phải đọc các tệp lớn trong C bằng cách sử dụng chức năng read
. Tôi chỉ tự hỏi liệu nó có tạo ra sự khác biệt về kích thước bộ đệm mà chúng ta giữ về hiệu suất hay không. Kích thước tệp có thể đạt đến hàng chục GB.kích thước bộ đệm tối ưu để đọc tệp trong C
Trả lời
Đầu tiên: chắc chắn, một bội số của kích thước sector/vật lý của đĩa, bạn có thể kiểm tra bằng cách sử dụng hdparm. Đây là cùng một số
Gợi ý: các chức năng fopen(3)
, fread(3)
, fwrite(3)
, v.v. của bạn đã thực hiện một số bộ đệm tốt cho bạn.
Một gợi ý khác: nếu bạn không cần truyền toàn bộ tệp, nhưng để truy cập ngẫu nhiên các phần của tệp, bạn có thể thử nhập mmap()
.
Hệ điều hành cũng thực hiện rất nhiều bộ đệm ngay cả với 'mở | đọc | viết' (trang cache + readahead) nếu không được hướng dẫn khác ('O_DIRECT' /' O_SYNC') – SaveTheRbtz
Phiên bản ngắn.
Điều đó tùy thuộc. Kích thước bộ đệm x86 của 4096 byte là một khởi đầu tốt (một page size và cũng là Advanced Format kích thước khối).
Phiên bản dài hơn.
Trong UNIX, nó phụ thuộc vào hạt nhân, libc, hệ thống tệp, phần cứng, v.v. Không chỉ trên các phiên bản và tùy chọn biên dịch mà còn trên các điều chỉnh thời gian chạy (ví dụ: thiết lập đọc trước).
Tự làm.
Kiểm tra! Xem Advanced Programing in UNIX Environment Chương 3.9 "Hiệu quả I/O" cho cách đơn giản để xác định kích thước bộ đệm đọc ghi tốt nhất cho một hệ thống cụ thể.
- 1. Kích thước đọc tệp đệm tối ưu?
- 2. C# FileStream: Kích thước bộ đệm tối ưu để ghi các tệp lớn?
- 3. Kích thước bộ đệm tối ưu của Android
- 4. tối ưu hóa kích thước bộ nhớ trong java
- 5. Kích thước tối đa của bộ đệm Node.js là gì
- 6. Làm thế nào tôi có thể đặt kích thước bộ đệm đọc tệp trong Perl để tối ưu hóa nó cho các tệp lớn?
- 7. Tìm ra kích thước tối ưu cho BufferedInputStream trong Java
- 8. Kích thước bộ đệm tối ưu cho luồng phản hồi của HttpWebResponse
- 9. Emacs kích thước bộ đệm tối đa ansi-hạn?
- 10. Java DatagramPacket (UDP) tối đa gửi/recv đệm kích thước
- 11. Tăng kích thước bộ đệm SPI trong Raspbian
- 12. Kích thước bộ đệm tối đa UDP sendto() và recvfrom() tối đa
- 13. Cách tính kích thước chunk tối ưu để tải lên các tệp lớn
- 14. Kích thước bộ nhớ cache tối đa
- 15. Tự động chọn kích thước bộ đệm cho Tệp I/O
- 16. tràn bộ đệm kích thước dbms_output
- 17. BufferedReader mặc định kích thước bộ đệm?
- 18. Kích thước tệp tối đa và kích thước kho lưu trữ tối đa trong Git?
- 19. Kích thước bộ đệm trong BufferedReader là gì?
- 20. Android - Kích thước bộ đệm MediaPlayer trong ICS 4.0
- 21. Kích thước tối ưu CSS lát nền-hình ảnh
- 22. Kích thước bộ đệm để tạo tệp nén .zip bằng Java là gì?
- 23. Làm cách nào để chỉ định bộ đệm kích thước cố định trong C++/CLI?
- 24. Kích thước varchar tối ưu cho MySQL là gì?
- 25. Kích thước tối ưu cho ứng dụng Android là gì?
- 26. ASP.NET MVC 4 WebAPI (beta) - cách thay đổi kích thước bộ đệm phản hồi tối đa
- 27. Tối ưu hóa kích thước tệp JPG - PHP, ImageMagick và tốc độ trang của Google
- 28. Bộ đệm giao thức của Google - Bộ đệm kích thước cố định?
- 29. Kích thước bộ đệm hợp lý khi tải xuống tệp trong Java
- 30. Kỹ thuật tối ưu hóa trong C#
Tất nhiên kích thước bộ đệm quan trọng, nhưng "tối ưu" phụ thuộc. –
Tài khoản càng lớn càng tốt. Và sẽ có một số lợi thế nhỏ khi sử dụng kích thước bộ đệm là sức mạnh của hai (hoặc ít nhất là bội số của 512). –
@HotLicks bạn có thể giải thích tại sao '512' –