日本久久99,色婷婷我要去我去也97,久久久久人妻精品一区三寸蜜桃,91人妻在线超碰,亚洲欧洲综合av在线

兩張圖,秒懂 Buffer 和 Cache 之間的區(qū)別
倆英文單詞,不先看看本義嗎?雖然都是抽象單詞,但在各個地方都有具象的應(yīng)用。
作者:51CTO技術(shù)棧
來源:51CTO技術(shù)棧
2017-05-03 21:33:00

Buffer 常見的是這個

c

對,就是鐵道端頭那個巨大的彈簧一類的東西。作用是萬一車沒停住,撞彈簧上減速慢,危險小一些。叫緩沖。

Cache 常見的是這個

d

沒錯,就是一種保管箱??吹接疫吥莻€被銹掉的 Food Cache 沒?這是部署在森林里的存應(yīng)急物資的保管箱。功能是把你需要用的東西放在更容易拿到的地方。雖然常用準確翻譯叫緩存,但個人以為意思表達的不對,丟了一半的功能。臺灣的翻譯更好,叫快取。

相信看完這些應(yīng)該不用我說區(qū)別了?……哎呀還是賣弄一下吧!

簡單說,Buffer 的核心作用是用來緩沖,緩和沖擊。比如你每秒要寫 100 次硬盤,對系統(tǒng)沖擊很大,浪費了大量時間在忙著處理開始寫和結(jié)束寫這兩件事嘛。用個 buffer 暫存起來,變成每 10 秒寫一次硬盤,對系統(tǒng)的沖擊就很小,寫入效率高了,日子過得爽了。極大緩和了沖擊。

Cache 的核心作用是加快取用的速度。比如你一個很復(fù)雜的計算做完了,下次還要用結(jié)果,就把結(jié)果放手邊一個好拿的地方存著,下次不用再算了。加快了數(shù)據(jù)取用的速度。

所以,如果你注意關(guān)心過存儲系統(tǒng)的話,你會發(fā)現(xiàn)硬盤的讀寫緩沖/緩存名稱是不一樣的,叫 write-buffer 和 read-cache.很明顯地說出了兩者的區(qū)別。

當然很多時候宏觀上說兩者可能是混用的。比如實際上 memcached 很多人就是拿來讀寫都用的。不少時候 Non-SQL 數(shù)據(jù)庫也是。嚴格來說,CPU 里的 L2 和 L3 Cache 也都是讀寫兼用——因為你沒法簡單地定義 CPU 用它們的方法是讀還是寫。硬盤里也是個典型例子,buffer 和 cache 都在一塊空間上,到底是 buffer 還是 cache?

不過仔細想一下,你說拿 cache 做 buffer 用行不行?當然行,只要能控制 cache 淘汰邏輯就沒有任何問題。那么拿 buffer 做 cache 用呢?貌似在很特殊的情況下,能確定訪問順序的時候,也是可以的。簡單想一下就明白——buffer根據(jù)定義,需要隨機存儲嗎?一般是不需要的。但 cache 一定要。所以大多數(shù)時候用 cache 代替 buffer 可以,反之就比較局限。這也是技術(shù)上說 cache 和 buffer 的關(guān)鍵區(qū)別。

補充

補充1:不要誤解 Buffer 就是用來寫的,Cache 就是用來讀的。讀可以用 Buffer 嗎?當然可以,比如你想一批一批地處理讀取而非有啥處理啥的時候,就可以用讀 buffer.寫當然也可以用 cache,比如你的寫入有很高的隨機性的時候。具體什么場景用 Buffer 什么場景用 Cache 要根據(jù)場景的具體需要決定。

補充2:不要誤解 Cache 或 Buffer 就一定是內(nèi)存或者存在什么高速媒介上的東西。只要相對高速即可。我完全可以在硬盤上存 Cache,比如有些游戲會在運行時建立預(yù)編譯的 shader(暴露年齡),這本質(zhì)上就是一種 cache,它存在速度緩慢的硬盤上,因為讀硬盤依舊比重新編譯要快。Buffer 也同理,例如 NTFS 文件系統(tǒng)自己就有 Logging Buffer,這個甚至明確拒絕放在任何易失緩存里。

關(guān)注中國IDC圈官方微信:idc-quan或微信號:821496803 我們將定期推送IDC產(chǎn)業(yè)最新資訊

查看心情排行你看到此篇文章的感受是:


  • 支持

  • 高興

  • 震驚

  • 憤怒

  • 無聊

  • 無奈

  • 謊言

  • 槍稿

  • 不解

  • 標題黨

51CTO技術(shù)棧

閱讀量
閱讀排行榜