在 使用 portversion 而非 pkg_version 看到 EdwardLee 以速度的差異推薦 portversion,但是 bs2 上的 AuthImage 不太喜歡我... 所以乾脆寫一篇出來好了。
portversion 是 sysutils/portupgrade 的套件之一,在 portversion 裡的 manpage 提到他使用 INDEX 檔來判斷版本:
portversion is very similar to pkg_version(1), but is optimized for portupgrade(1) and runs much faster than pkg_version(1) thanks to the ports database generated from the INDEX file. See portsdb(1) for details.
但 pkg_version 用 -I 的參數也可以用 INDEX 檔,這是 -I 的說明:
Use only the index file for determining if a package is out of date. This is much faster than using the version number from a port's Makefile, at the expense of potentially giving an incorrect result if the index file is out of date.
速度上呢?這是最慢的 pkg_version (without -I):
44.992u 41.211s 1:27.37 98.6% 221+441k 1634+0io 56pf+0w
這是 portversion:
2.970u 0.893s 0:03.79 101.8% 29+16680k 0+0io 0pf+0w
這是最快的 pkg_version -I:
1.402u 0.156s 0:01.55 100.0% 43+1898k 0+0io 0pf+0w
多謝指正。不過,同樣使用 INDEX 的情況下,速度似乎不會差那麼多?我再研究看看。
ps.我不清楚為何無法在 bs2 blog 上留言,我再問一下LHD 看看。
一個是 binary 一個是 ruby18,可能是這個原因吧...