深入對比Glide 和 Picasso

2021-08-15 06:58:16 字數 2676 閱讀 3907

glide 和 picasso 可以說是目前 android 上最流行的載入庫了。大部分安卓應用開發人員都有使用過這兩個庫在他們的開發工作中。這兩個庫也都確實提供了大量載入的功能,而且也都經過了很多應用的檢驗,是可靠可信的。表面看上去似乎兩者工作原理很相似,但是實際上是有著很大差別的,主要體現在下面幾個方面:

的快取機制

載入到記憶體的機制

對比的版本是 glide v3.7.0 和 picasso v2.5.2 的版本。

導入庫到專案中

picasso 和 glide 都在 jcenter 上有建立庫,所以只需要簡單的在新增dependency 即可

picasso

dependencies

glide

dependencies
庫的大小和方法的數量

對比兩個.jar 庫的大小,glide 要比 picasso 大很多,基本上是 picasso 的3.5倍:

從庫的大小,我們就可以預見,glide 的方法必然是要大於picasso 的,picasso 的方法 總共有849個,而 glide 的有2678個:

使用方式picasso:picasso.with(myfragment)

快取大小

從這點來看,似乎 glide 的這種設計很有問題了?當然不是,這種做法也會帶來一定的好處,在下面的memory中就會展示。

記憶體使用

glide 預設是用的 rgb_555 的設定,picasso 則是用的 argb _8888的設定。為了公平起見,我這裡修改了 glidemodule,讓 glide 也使用 argb _8888的格式,做法也很簡單,新建乙個類然後繼承 glidemodule

android:name="example.com.myanimation.glideconfiguration"

android:value="glidemodule"/>

public

class

glideconfiguration

implements

glidemodule

@override

public

void

registercomponents

(context context, glide glide)

}

下面是兩者載入的對比:

可以看出 glide (大約8mb) 要比 picasso (13 mb) 的少不少。其實這裡就體現出了之前提到的 glide 快取的方式問題。picasso 是快取的 full size 的大小,而 glide 是載入已經改變大小後的,顯而易見使用的memory會小很多。 這樣可以減少 outofmemoryerror 的可能性。

載入的時間

實際試驗中,picasso 會比 glide 快一點。猜測可能的原因還是因為之前講到的快取機制導致,因為picasso 是直接把圖載入到記憶體中,而 glide 則需要改變大小再載入到記憶體中去。這個應該是會耗費一定的時間。

但是,當載入從記憶體中的時候,glide 則比 picasso 要快。其原理還是因為快取機制的區別。因為picasso 從快取中拿到的,還要先去 resize 後,然後設定給 imageview,但是 glide 則不需要這樣。

其他功能的對比

結論實際上,就我個人來看,glide 要略優於 picasso. 特別是支援 gif,這個殺手鐗啊!

Picasso和Glide對比(不深入)

其它博文的比較 glide在顯示在自定義imageview時,會有些問題,儘管繼承自imageview。glide裡面的drawable導致 picasso 支援urlconnection,預設使用okhttp glide 預設使用原生httpurlconnection,也支援okhttp和vall...

Glide和Picasso的對比

下面是picasso和glide影象比較的結果。1920 x1080畫素影象載入到768 x432畫素imageview 我們再來看看記憶體開銷圖,這次貌似glide花費了兩倍於上次的記憶體,但是picasso的記憶體開銷仍然遠大於glide。原因在於picasso是載入了全尺寸的到記憶體,然後讓g...

Glide和Picasso使用和區別

glide 優點 1 快取 快取 glide 不僅是乙個快取,它支援 gif webp 縮圖。甚至是 video,所以更該當做乙個 快取。2 支援優先順序處理 3 與 activity fragment 生命週期一致,支援 trimmemory glide 對每個 context 都保持乙個 req...