午夜视频免费看_日韩三级电影网站_国产精品久久一级_亚洲一级在线播放_人妻体内射精一区二区三区_91夜夜揉人人捏人人添红杏_91福利在线导航_国产又粗又猛又黄又爽无遮挡_欧美日韩一区在线播放_中文字幕一区二区三区四区不卡 _日日夜夜精品视频免费观看_欧美韩日一区二区三区

主頁 > 知識庫 > Golang 獲取文件md5校驗的方法以及效率對比

Golang 獲取文件md5校驗的方法以及效率對比

熱門標簽:涿州代理外呼系統 電話機器人軟件免費 阿克蘇地圖標注 外呼系統顯本地手機號 評價高的400電話辦理 百度地圖標注后傳給手機 excel地圖標注分布數據 壽光微信地圖標注 外呼系統用什么卡

近期有一個需求:獲取多個文件 md5 校驗和判斷是否存在重復文件,因為文件數量較多,有的文件還比較大,需要處理的文件還沒有到位,我就考慮了一下效率的問題。

目前我已知的 Golang 中獲取 md5 校驗和的方法有兩個

這里直接給出實現源碼。

package main
import (
 "crypto/md5"
 "flag"
 "fmt"
 "io"
 "io/ioutil"
 "os"
)
var which = flag.Bool("which", true, "")
var path = flag.String("path", "", "")
var cnt = flag.Int("cnt", 100, "")
func aaa() {
 f, err := os.Open(*path)
 if err != nil {
  fmt.Println("Open", err)
  return
 }
 defer f.Close()
 body, err := ioutil.ReadAll(f)
 if err != nil {
  fmt.Println("ReadAll", err)
  return
 }
 md5.Sum(body)
 //fmt.Printf("%x\n", md5.Sum(body))
}
func bbb() {
 f, err := os.Open(*path)
 if err != nil {
  fmt.Println("Open", err)
  return
 }
 defer f.Close()
 md5hash := md5.New()
 if _, err := io.Copy(md5hash, f); err != nil {
  fmt.Println("Copy", err)
  return
 }
 md5hash.Sum(nil)
 //fmt.Printf("%x\n", md5hash.Sum(nil))
}
func main() {
 flag.Parse()
 for i := 0; i  *cnt; i++ {
  if *which {
   aaa()
  } else {
   bbb()
  }
 }
}

還有可供參考的獲取 md5 校驗和的 Shell 命令

md5 -- calculate a message-digest fingerprint (checksum) for a file
md5 [-pqrtx] [-s string] [file ...]

測試文件是公司項目的日志文件

banjakukutekiiMac:shell panshiqu$ ls -an | grep by
-rw-r--r--   1 501  20   7285957 11 17 16:14 by.out
banjakukutekiiMac:shell panshiqu$ cp by.out by2.out
banjakukutekiiMac:shell panshiqu$ cat by.out >> by2.out
banjakukutekiiMac:shell panshiqu$ ls -an | grep by
-rw-r--r--   1 501  20   7285957 11 17 16:14 by.out
-rw-r--r--   1 501  20  14571914 11 17 17:03 by2.out

下面效率展示

banjakukutekiiMac:shell panshiqu$ time ./gomd5 -cnt=1 -which=true -path="by.out"
real 0m0.027s
user 0m0.017s
sys 0m0.012s
banjakukutekiiMac:shell panshiqu$ time ./gomd5 -cnt=1 -which=true -path="by2.out"
real 0m0.048s
user 0m0.033s
sys 0m0.018s
banjakukutekiiMac:shell panshiqu$ time ./gomd5 -cnt=1 -which=false -path="by.out"
real 0m0.018s
user 0m0.012s
sys 0m0.004s
banjakukutekiiMac:shell panshiqu$ time ./gomd5 -cnt=1 -which=false -path="by2.out"
real 0m0.031s
user 0m0.024s
sys 0m0.005s
banjakukutekiiMac:shell panshiqu$ time md5 by.out
MD5 (by.out) = 9d79e19a00cef1ae1bb6518ca4adf9de
real 0m0.023s
user 0m0.019s
sys 0m0.006s
banjakukutekiiMac:shell panshiqu$ time md5 by2.out
MD5 (by2.out) = 0a029a460a20e8dcb00d032d6fab74c6
real 0m0.042s
user 0m0.037s
sys 0m0.009s

總結:

不管什么方法都會隨著文件變大時間會變長,上面的例子大約都是2倍

io.Copy 方法效率最高,建議大家這樣使用

補充:Go語言:md5計算方法的效率研究

研究了一下Go的md5計算方法,目前來看,效率最高運行最快的寫法是調用md5.Sum()函數返回16字節checksum,然后把每個字節的高4位和低4位分別映射成16進制字符存到兩個字節里,得到32字節,再轉成字符串。

FastMD5較其它算法效率提高了至少46%以上。

 
const hextable = "0123456789abcdef" 
//作者: pengpengzhou
func FastMD5(str string) string {
	src := md5.Sum([]byte(str))
	var dst = make([]byte, 32)
	j := 0
	for _, v := range src {
		dst[j] = hextable[v>>4]
		dst[j+1] = hextable[v0x0f]
		j += 2
	}
	return string(dst)
}

Go Test Benchmark測試結果:

goos: linux
goarch: amd64
pkg: example
BenchmarkFastMD5-4       5564898               205 ns/op
BenchmarkV1-4            3461698               379 ns/op
BenchmarkV2-4            2277235               516 ns/op
BenchmarkV3-4            2158122               527 ns/op
PASS
ok      example 6.440s

詳細代碼如下:

package main 
import (
	"crypto/md5"
	"encoding/hex"
	"fmt"
	"io"
)
 
const hextable = "0123456789abcdef"
 
func FastMD5(str string) string {
	src := md5.Sum([]byte(str))
	var dst = make([]byte, 32)
	j := 0
	for _, v := range src {
		dst[j] = hextable[v>>4]
		dst[j+1] = hextable[v0x0f]
		j += 2
	}
	return string(dst)
}
 
func md5V1(str string) string {
	h := md5.New()
	h.Write([]byte(str))
	return hex.EncodeToString(h.Sum(nil))
}
 
func md5V2(str string) string {
	data := []byte(str)
	has := md5.Sum(data)
	md5str := fmt.Sprintf("%x", has)
	return md5str
}
 
func md5V3(str string) string {
	w := md5.New()
	io.WriteString(w, str)
	md5str := fmt.Sprintf("%x", w.Sum(nil))
	return md5str
}
 
func main() {
	str := "中文"
	fmt.Println(FastMD5(str))
	fmt.Println(md5V1(str))
	fmt.Println(md5V2(str))
	fmt.Println(md5V3(str))
}
package main 
import (
	"testing"
)
 
var str = "golang中文教程"
 
func BenchmarkFastMD5(b *testing.B) {
	for i := 0; i  b.N; i++ {
		FastMD5(str)
	}
}
 
func BenchmarkV1(b *testing.B) {
	for i := 0; i  b.N; i++ {
		md5V1(str)
	}
}
 
func BenchmarkV2(b *testing.B) {
	for i := 0; i  b.N; i++ {
		md5V2(str)
	}
}
 
func BenchmarkV3(b *testing.B) {
	for i := 0; i  b.N; i++ {
		md5V3(str)
	}
}

以上為個人經驗,希望能給大家一個參考,也希望大家多多支持腳本之家。如有錯誤或未考慮完全的地方,望不吝賜教。

您可能感興趣的文章:
  • Golang的md5 hash計算操作
  • golang中字符串MD5生成方式總結

標簽:銅川 蘭州 重慶 吐魯番 雞西 梅河口 汕頭 欽州

巨人網絡通訊聲明:本文標題《Golang 獲取文件md5校驗的方法以及效率對比》,本文關鍵詞  Golang,獲取,文件,md5,校驗,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Golang 獲取文件md5校驗的方法以及效率對比》相關的同類信息!
  • 本頁收集關于Golang 獲取文件md5校驗的方法以及效率對比的相關信息資訊供網民參考!
  • 推薦文章
    国产精品久久久久婷婷| www.国产精品视频| 91九色露脸| 久久久久久日产精品| 久久精品久久99| 亚洲福利视频专区| 日韩手机在线观看| 日韩在线精品视频| 豆国产97在线 | 亚洲| 中文字幕精品—区二区| 男人的天堂一区| 337p亚洲精品色噜噜| 僵尸世界大战2 在线播放| 亚洲va欧美va人人爽| 麻豆精品免费视频| 制服视频三区第一页精品| 蜜臀av一区二区三区有限公司| 中文字幕成人av| 视频在线精品一区| 91丝袜美腿高跟国产极品老师 | 日本一区精品| 天天色综合成人网| 九九视频免费看| 日本不卡久久| 亚洲精品国产第一综合99久久| 一起操在线视频| 色哟哟在线观看一区二区三区| 国产永久免费网站| 日韩三级在线免费观看| 少妇一级淫免费放| 91在线porny国产在线看| 伊人精品视频在线观看| 97在线视频一区| 日本va欧美va精品| 91精品国产毛片武则天| 欧美日韩中文在线| 欧美激情专区| 综合自拍亚洲综合图不卡区| 性欧美成人播放77777| 国产日韩欧美一二三区| 一本色道久久综合狠狠躁的推荐| 精品乱码一区内射人妻无码 | 自拍另类欧美| 欧美一区二区三区爱爱| 久久精品国产av一区二区三区| 久久久极品av| 国产 欧美 自拍| 国产精品成人一区二区三区 | 另类调教123区| 91久久国产自产拍夜夜嗨| 一区二区三区久久久| jizz国产免费| 日韩三级在线播放| 亚洲美女淫视频| 伊人影院在线观看视频| 91精品国产综合久久精品| 中文字幕三级电影| 久久色免费在线视频| 日韩精品视频网| 绯色av蜜臀vs少妇| julia一区二区中文久久94| 555www色欧美视频| 性xxxxbbbb| 九色91popny| 亚洲美女激情视频| 性中国xxx极品hd| 日韩精品福利视频| 一区二区在线观看免费| 鲁丝一区二区三区| 欧美成aaa人片免费看| ,一级淫片a看免费| 成人欧美一区二区三区视频xxx| 欧美二区三区91| 日韩精品91亚洲二区在线观看| 男女av免费观看| 欧美人xxxx| 国产极品国产极品| 欧美成在线视频| 国产mv日韩mv欧美| 一级片黄色免费| 俄罗斯精品一区二区| 亚洲电影在线观看| 国产欧美日韩精品一区| 9.1成人看片免费版| www.亚洲人| 日本一区网站| 国产在线不卡一卡二卡三卡四卡| www激情五月| 欧美激情久久久久| 久久久久久久久蜜桃| 红桃av在线播放| 欧美性猛交xxxxxxxx| 美女免费视频一区二区| 欧美午夜精品一区二区| 91精品国产91久久久久久不卡| 国产盗摄女厕一区二区三区| 国产女教师bbwbbwbbw| 岛国精品视频在线播放| 欧美日韩在线观看免费| 亚洲一区免费看| 国产最新精品视频| 欧美一区二区三区在线| 久久欧美中文字幕| 无码久久精品国产亚洲av影片| 26uuu国产| 国产一区二区不卡视频在线观看| 色哟哟无码精品一区二区三区| 亚洲午夜精品视频| 九色|91porny| 岛国精品资源网站| 国产日韩精品入口| 姬川优奈aav一区二区| 91中文字幕永久在线| 国产欧美日韩精品专区| 精品粉嫩超白一线天av| 久久丝袜美腿综合| 国产精品成人av久久| 免费日韩av电影| 亚洲午夜免费福利视频| 色哟哟一一国产精品| 狠狠久久综合婷婷不卡| 亚洲精品综合精品自拍| 亚洲精品免费电影| 国产一区二区免费在线| 亚洲网站在线免费观看| 蜜桃视频最新网址| 秋霞无码一区二区| 国产一区二区精品在线| 亚洲第一精品夜夜躁人人躁| 日韩成人一级大片| 激情小说综合网| 亚洲最色的网站| 亚洲一级在线播放| 嫩草影院国产精品| 精品国产一区二区在线| 国产九九视频一区二区三区| 一本色道久久综合精品婷婷| 一级黄色片大全| 国产一区免费| 亚洲国产精品高清久久久| 99综合电影在线视频| 欧美性潮喷xxxxx免费视频看| 欧美精品一区三区| 国产欧美日韩另类视频免费观看| 亚洲中文一区二区三区| 老妇女50岁三级| 午夜剧场免费看| 亚洲福利精品视频| www.日本在线播放| 国产精品中出一区二区三区| 麻豆乱码国产一区二区三区| 亚洲成人动漫av| 丝袜诱惑制服诱惑色一区在线观看| 激情综合激情五月| 99影视tv| 精品国产123| 成人久久18免费网站麻豆 | 亚洲欧美日韩中文播放| 久久国产婷婷国产香蕉| 日韩免费黄色片| www.日本少妇| 欧美黄色性视频| 亚洲va中文字幕| 久久久夜色精品| 91久久久久久| 亚洲视频视频在线| 91福利在线观看| 一区二区三区精品在线| jizz一区二区| 色婷婷视频在线| 天天综合久久综合| 国产精品第56页| 一级性生活大片| 日韩a级黄色片| 成人免费网站在线| 欧美另类变人与禽xxxxx| 国产成人亚洲综合a∨婷婷图片| 影音先锋男人看片资源| 日本一本二本在线观看| 久久国产精品偷| fc2成人免费人成在线观看播放| 日本黄色片免费观看| 成年人在线观看av| 中文字幕一区二区在线观看视频 | 亚洲一二三专区| 久久经典综合| caopeng视频| 成人免费视频网站入口| 一本色道久久综合狠狠躁篇怎么玩 | 欧美日韩一区二区三区69堂| 美女日批免费视频| 欧美性视频在线播放| 国产精品69久久| 亚洲一级片在线看| 国产精品久久久久7777按摩 | 欧美性少妇18aaaa视频| 国产精品欧美精品| 国产十六处破外女视频| av网站大全免费| 国产成人精品视| 综合av第一页| 一级片免费在线播放| 18禁免费观看网站| 欧美激情久久久久久| 中文在线免费一区三区高中清不卡| 印度午夜性春猛xxx交| 九九九九精品| 精品国产伦一区二区三区观看方式 | 欧美大尺度激情区在线播放| 国产亚洲女人久久久久毛片| 亚洲一级生活片| 亚洲欧洲精品一区二区| 国产一区二区三区三区在线观看| 久久综合色鬼综合色| 日韩欧美激情视频| 久久精品国产露脸对白| 成人激情视频在线播放| 欧美变态凌虐bdsm| 亚洲aaa在线观看| 日日躁夜夜躁aaaabbbb| 欧美成人精品在线视频| 中文字幕亚洲视频| 国产精品丝袜黑色高跟鞋| 亚洲精品自在久久| 91免费观看在线| 国产乡下妇女做爰毛片| 妞干网在线播放| 热久久99这里有精品| 欧美性猛交xxxx免费看| 丝袜亚洲另类欧美| av手机在线播放| 欧美 日韩精品| 日韩尤物视频| 波多野结衣 作品| 国产二区视频在线播放| 成人av在线不卡| 国产精品久久久久久久久久久不卡 | 欧美最近摘花xxxx摘花| 日韩欧美黄色动漫| 麻豆久久久久久| 国产91在线播放九色| 精品免费久久久久久久| 88xx成人精品| 日韩一区二区三区视频在线观看| 狠狠色狠狠色综合日日91app| 日韩网红少妇无码视频香港| 无码精品a∨在线观看中文| 91欧美精品成人综合在线观看| 欧美日韩国产大片| 精品一区在线看| 中文天堂资源在线| 永久免费看av| 国产精品第二页| 五月婷婷激情五月| 亚洲熟女一区二区三区| 一级做a爰片久久| 青青久久aⅴ北条麻妃| 亚洲加勒比久久88色综合 | 日韩三级电影| 国产成人a亚洲精品| 欧美日韩xxx| 97视频免费看| 国产91精品久久久久久久| 久久天天躁狠狠躁老女人| 亚洲午夜电影在线| 亚洲超碰精品一区二区| av在线不卡网| 无码人妻精品一区二区三区不卡| 国产+高潮+白浆+无码| 日韩黄色短视频| 91免费在线观看网站| 欧美成人网在线| 91精品蜜臀在线一区尤物| 中文欧美字幕免费| 日本在线不卡视频| 国产精品100| 中文字幕丰满孑伦无码专区| 黄页网站在线观看视频| 成人免费观看网站| 国产97在线视频| 精品偷拍一区二区三区在线看| 亚洲欧美区自拍先锋| 成人毛片视频免费看| 亚洲一区二区三区日韩| 久久99久久久久久| 精品无人区一区二区三区| 亚洲国产成人在线| 丰满肉嫩西川结衣av| 精品无码人妻一区二区三| 好吊色视频一区二区三区| 黄色网页免费在线观看| 欧美在线3区| 国产精品电影网站| 美女国内精品自产拍在线播放| 777亚洲妇女| 亚洲在线视频免费观看| 久久综合久久综合久久| 全国精品久久少妇| 国产精品伦一区二区三区| 国产性猛交普通话对白| 免费的av网站| 红桃视频 国产| 欧美 日韩 国产在线观看| 欧美日韩国产精品一区二区| 成人欧美一区二区三区黑人孕妇| 久久琪琪电影院| 一个人www欧美| 亚洲精品自拍偷拍| 欧美美女直播网站| 日韩欧美在线视频观看| 国产精品色噜噜| 成人免费视频app| 国产v在线观看| 国产口爆吞精一区二区| 久久超碰97人人做人人爱| 中文字幕免费视频| 少妇光屁股影院| 亚洲最大成人在线视频| 久久久精品黄色| 8x8x8国产精品| 中文字幕不卡av| 久热精品视频在线观看一区| 国内精品一区二区三区四区| 人人澡人人澡人人看欧美| 精品国产一区二区三| 欧美久久久久久久| 9久久9毛片又大又硬又粗| 三级黄色片免费观看| 中文字幕一区二区三区四区在线视频| 一区二区三区 日韩| 久草精品在线播放| 农民人伦一区二区三区| 日韩不卡一二三| 三级黄色片在线观看| 国产无遮挡aaa片爽爽| 91久久国产综合久久91| 免费观看黄色一级视频| 国产在线精品免费av| 久久免费美女视频| 欧美亚洲动漫精品| 精品久久久精品| 好吊成人免视频| 91黄视频在线| 91久久一区二区| 欧美性xxxxxxxx| 精品99久久久久久| 亚洲精品久久视频| 亚洲日韩中文字幕| 中文字幕在线成人| 久久国产精品网站| 欧美日韩成人网| 欧美在线视频网站| 国产精品女主播| 成人欧美一区二区三区黑人孕妇| 亚洲最大福利视频| 精品免费二区三区三区高中清不卡 | 久久午夜精品| 青青草成人在线观看| 另类综合日韩欧美亚洲| 精品一区二区三区蜜桃| 国产视频视频一区| 1000精品久久久久久久久| 色中色一区二区| 日韩欧美成人激情| 精品亚洲永久免费精品| 精品视频久久久久久久| 综合136福利视频在线| 97精品伊人久久久大香线蕉 | 久久精品人成| 国产成人精品综合久久久久99| 国产精品2020| 日本激情视频网站| 一区二区三区在线观看网站| 91激情五月电影| 欧美一区二区在线不卡| 精品亚洲aⅴ在线观看| 精品自在线视频| 国产欧美在线看| 日本一区高清在线视频| 免费在线观看的毛片| 少妇搡bbbb搡bbb搡打电话| 国产精品视频在| 中文字幕人妻丝袜乱一区三区 | 国产精品1区2区在线观看| 99国产视频| 精品一区二区成人免费视频| 欧美 日韩 国产 激情| 亚洲人人夜夜澡人人爽| 日韩精品成人一区| 蜜桃视频在线观看www| 国产精品18久久久| 亚洲免费高清视频在线| 欧美日本一区二区三区| xvideos亚洲| 国产精品一区二区三区在线播放 | 天堂网av手机版| 99热这里精品| 日韩激情在线观看| 国产欧美一区二区精品秋霞影院| 午夜精品一区二区三区免费视频| 国产亚洲xxx| 亚洲欧美日韩中文视频| 久久国产精品99久久久久久丝袜 | av中文字幕播放| 一区二区三区日韩欧美精品 | 91高清视频在线免费观看| 国产精品一区在线播放| 欧美丰满熟妇bbbbbb百度| 日韩人妻一区二区三区| 91theporn国产在线观看|