Điểm đầu tiên là không phải trong số các mẫu mã đó đọc một tệp. Điều này nghe có vẻ khó chịu hoặc không chính xác, nhưng đó là sự thật. Những gì họ thực sự làm là mở một tập tin để đọc. Và về những gì họ thực sự làm, có lẽ không phải là một sự khác biệt lớn trong hiệu quả tương ứng của họ.
Khi thực sự đọc tệp, cách tiếp cận tốt nhất để sử dụng sẽ tùy thuộc vào tệp chứa, dữ liệu phải có trong các thuật toán trong bộ nhớ, v.v. Điều này sẽ xác định xem nó có tốt hơn không sử dụng Scanner
hoặc Reader
thô, từ góc độ hiệu suất và quan trọng hơn là từ quan điểm làm cho mã của bạn đáng tin cậy và có thể bảo trì.
Cuối cùng, cơ hội là điều này sẽ không tạo sự khác biệt đáng kể đối với hiệu suất tổng thể của mã của bạn. Những gì tôi nói là bạn đang tối ưu hóa ứng dụng của bạn sớm. Bạn nên bỏ qua hiệu suất ngay bây giờ và chọn phiên bản sẽ làm cho phần còn lại của mã của bạn đơn giản hơn. Khi ứng dụng đang hoạt động, hãy cấu hình nó với một số dữ liệu đầu vào đại diện. Các hồ sơ sẽ cho bạn biết thời gian được dành đọc tập tin, trong điều kiện tuyệt đối, và tương đối so với phần còn lại của ứng dụng. Điều này sẽ cho bạn biết liệu đó có phải là có giá trị nỗ lực để cố gắng tối ưu hóa việc đọc tệp hay không.
Chỉ một chút lời khuyên về hiệu suất tôi muốn đưa ra là ký tự đó bằng cách đọc ký tự từ luồng đầu vào hoặc trình đọc chưa được lọc không hiệu quả. Nếu tệp cần được đọc theo cách đó, bạn nên thêm BufferedReader vào ngăn xếp.
Nguồn
2012-04-09 00:53:14
Liên quan: http://stackoverflow.com/questions/2231369/scanner-vs-bufferedreader –
Liên quan: [Máy quét v. StreamTokenizer] (http://stackoverflow.com/a/2082174/230513). – trashgod