Java使用StringBuffer的好處

  • 沒有緩衝區時,每次讀取操作都會導致一次文件讀取操作(就是告訴操作系統內核我要讀這個文件的這個部分,麻煩你幫我把它取過來)。
  • 有緩衝區時,會一次性讀取很多數據,然後按要求分次交給上層調用者。

讀取塊大小通常是按最適合硬件的大小來讀的,因爲對於硬件來說,一次讀取一塊連續數據(比如 1K)和一次讀取一個字節需要的時間幾乎是一樣的(都是一次讀操作,只是最終提交的數據量有差異)。帶緩衝的 I/O 和不帶緩衝的相比效率差異是非常顯著的,你可以自行寫程序測試

說到Java reader緩存, 其實有兩層緩存:

  1. OS緩存, 把磁盤數據 讀入內存, 通過read ahead, io scheduler等減少磁盤讀取次數.
  2. App緩存, 做緩存/預讀, 即BufferredReader的角色.

BufferredReader的作用, 我的理解, 一) 減少System Call次數; 二) 減少磁盤讀取次數.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章