成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比

熱門標(biāo)簽:涿州代理外呼系統(tǒng) 電話機(jī)器人軟件免費(fèi) 阿克蘇地圖標(biāo)注 外呼系統(tǒng)顯本地手機(jī)號(hào) 評(píng)價(jià)高的400電話辦理 百度地圖標(biāo)注后傳給手機(jī) excel地圖標(biāo)注分布數(shù)據(jù) 壽光微信地圖標(biāo)注 外呼系統(tǒng)用什么卡

近期有一個(gè)需求:獲取多個(gè)文件 md5 校驗(yàn)和判斷是否存在重復(fù)文件,因?yàn)槲募?shù)量較多,有的文件還比較大,需要處理的文件還沒有到位,我就考慮了一下效率的問題。

目前我已知的 Golang 中獲取 md5 校驗(yàn)和的方法有兩個(gè)

這里直接給出實(shí)現(xiàn)源碼。

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 校驗(yàn)和的 Shell 命令

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

測(cè)試文件是公司項(xiàng)目的日志文件

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

總結(jié):

不管什么方法都會(huì)隨著文件變大時(shí)間會(huì)變長(zhǎng),上面的例子大約都是2倍

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

補(bǔ)充:Go語(yǔ)言:md5計(jì)算方法的效率研究

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

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測(cè)試結(jié)果:

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

詳細(xì)代碼如下:

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)
	}
}

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比》,本文關(guān)鍵詞  Golang,獲取,文件,md5,校驗(yàn),;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Golang 獲取文件md5校驗(yàn)的方法以及效率對(duì)比的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    亚洲精品国产精品乱码在线观看| www.亚洲视频.com| 成人网18入口| 欧美俄罗斯乱妇| 91chinesevideo永久地址| 色综合中文字幕| 一区二区三区视频免费| 俄罗斯男人又粗又大| 777午夜精品免费视频| 国产人成精品| 韩国三级av在线免费观看| 日本亚洲欧洲色| 日韩激情久久| 久久免费视频在线观看| 香蕉久久夜色精品国产更新时间| 中文在线有码| free性护士videos欧美| 91在线免费视频| 清纯唯美亚洲色图| 国产福利视频在线| 国产激情一区二区三区| 日韩av片在线看| 亚洲日本va午夜在线影院| 少妇愉情理伦片bd| 日日摸日日碰夜夜爽无码| 少妇高潮一69aⅹ| 波多野结衣乳巨码无在线观看| 国产白丝一区二区三区| 日韩欧美国产wwwww| 91成人精品观看| 麻豆网址在线观看| 四虎国产精品免费久久5151| 国产激情99| 欧美激情网址| 人妻少妇偷人精品久久久任期| 91国内在线播放| 欧美精品成人一区二区在线观看| 911国产网站尤物在线观看| 香蕉视频999| 色婷婷视频在线| 一级二级在线观看| 精品成人一区二区| 国产精品亚洲色图| 香蕉久久一区二区三区| 成人资源在线播放| 97香蕉超级碰碰久久免费的优势| 日本中文字幕在线观看| 国产精品高潮呻吟久久| www.亚洲一二| 性欧美videos精品| 亚洲天堂一区在线观看| 一本久道久久综合狠狠爱| 五级黄高潮片90分钟视频| 无码人妻久久一区二区三区蜜桃| 四虎影视成人永久免费观看视频| 日本成人精品| 精品黑人一区二区三区在线观看| 92看片淫黄大片一级| 免费在线观看的av网站| 成人在线精品视频| 国产一区二区三区在线播放免费观看| 日本aⅴ大伊香蕉精品视频| 曰本一区二区三区视频| 亚洲国产欧美日韩精品| 先锋影音av中文资源| 男人天堂亚洲天堂| 男人亚洲天堂| 国产美女视频免费观看下载软件| 19j韩国主播韩宝贝在线| 亚洲五月激情网| 国产小视频福利在线| 校花撩起jk露出白色内裤国产精品| 在线能看的黄色| 国产麻豆精品95视频| 每日在线更新av| 欧美区二区三区| 欧美日韩另类一区| 亚洲色图一二三区| 亚洲蜜臀av乱码久久精品蜜桃| 成人激情黄色网| 一级二级三级视频| 久久综合九九| 婷婷午夜社区一区| 久久精品99久久久久久| 国产69精品久久久久孕妇| 久久午夜夜伦鲁鲁一区二区| 最新国产在线精品91尤物| 国产午夜精品一区在线观看| 成人av视屏| 佐山爱痴汉视频一区二区三区| 亚洲娇小xxxx欧美娇小| 国产亚洲精品超碰| 中文字幕亚洲区| 国产乱码精品一区二三赶尸艳谈| 圆产精品久久久久久久久久久| 色资源网站在线观看| 国产精品久久婷婷六月丁香| 欧美视频一区二区三区四区| 农村老熟妇乱子伦视频| 奇米影视亚洲狠狠色| 欧美一区二区三区激情| www.操.com| 亚洲午夜在线视频| 日韩在线视频一区| www.天天操| 国产一区二区三区中文字幕| 最新中文乱码字字幕在线| 婷婷四月色综合| 久久精品国产精品亚洲毛片| 全亚洲第一av番号网站| 中国女人内谢69视频| 亚洲色图视频在线观看| 欧美网色网址| 制服丝袜在线91| 欧美性xxxxx极品少妇| 久久99热99| 青青操在线播放| 国产精品网站在线| 在线国产精品一区| 黑人巨大xxx| 日韩大片在线播放| 青春娱乐分类视频精品2动漫| 91精品国产色综合久久不8| 国产中文字字幕乱码无限| 日韩精品第一| 国产一区二区三区在线免费观看| 日韩av综合在线观看| 91成人天堂久久成人| 99久久国产综合精品女不卡| 亚洲欧美日韩中文播放| 国产精品无码免费专区午夜| 欧美大片第1页| 色欲av无码一区二区三区| 欧美一级淫片免费视频黄| 日韩av高清在线观看| 国产精品久久久久久久久免费| 亚洲欧美日本国产| 亚洲按摩av| 绯色av一区二区| 簧片在线免费看| 亚洲国产欧美视频| 成人乱人伦精品视频在线观看| 国产真实夫妇交换视频| 久久免费福利视频| 中文字幕在线一区| 欧美一卡二卡在线观看| 国产网友自拍视频导航网站在线观看| 精品国产一区二区三区久久久狼| 波多野洁衣一区| 亚洲天堂一区在线观看| 国产激情视频一区| www免费网站在线观看| 欧美国产日产韩国视频| 无码人妻精品一区二区蜜桃百度| 91综合久久| 97在线观看免费高| 免费中文字幕视频| 色撸撸在线观看| av福利网址网站| 国产精品成人观看视频免费| 午夜精品成人在线| 合欧美一区二区三区| 99久久精品国产观看| 亚洲精品国产手机| 亚洲成人福利在线观看| 亚洲二区在线| 三级国产在线观看| 国产精品不卡在线观看| 在线播放一区| 校园春色亚洲| 国产婷婷精品av在线| 久久久久在线| 伊人久久大香线蕉午夜av| 2018中文字幕在线观看| 欧美国产精品va在线观看| 26uuu成人网一区二区三区| av 日韩 人妻 黑人 综合 无码| 综合久久综合| 欧美日夜夜逼| 日本xxxxxxx免费视频| 成 年 人 黄 色 大 片大 全| 欧美大片一区二区| 视频在线观看你懂的| 国产麻豆精品高清在线播放| 国产麻豆精品一区二区| 久久精品一区二区三区不卡免费视频| 国产不卡精品视男人的天堂| 性感美女激情视频在线观看| 婷婷丁香久久五月婷婷| 伊人春色精品| 中文字幕有码在线视频| 欧美激情手机在线视频| 久久精品青青大伊人av| 欧美日韩在线网站| 欧日韩在线观看| 中文字幕在线中文字幕二区| 原纱央莉成人av片| 在线看日韩欧美| 亚洲香蕉成视频在线观看| 国产精品久久久久久久免费大片| 欧美裸体xxxx极品少妇| 999成人网| 夜夜操天天操亚洲| 交100部在线观看| 中文.日本.精品| 色婷婷精品大在线视频| 国产精品国产三级国产aⅴ入口| 亚洲欧美国产高清va在线播放| 日韩精品毛片| 成人三级av| 欧美无砖砖区免费| 波多野结衣之无限发射| 日韩电影免费在线看| 深夜av在线| 欧美午夜精品久久久久久人妖| 久久无码精品丰满人妻| 亚洲美免无码中文字幕在线| 在线免费观看欧美| 久久一区二区三区欧美亚洲| 国产区在线看| 女人喷潮完整视频| 国产福利精品在线| 国产激情一区| 成人h猎奇视频网站| 精品欧美午夜寂寞影院| 午夜剧场成人观在线视频免费观看| 久久99久久99精品免观看软件| 亚欧激情乱码久久久久久久久| 亚洲精品中文在线| 99久久综合| 国产精品igao视频网网址不卡日韩| 福利网站在线观看| 欧美精品一区二区三区久久久| 日韩精品第一| 少妇与大狼拘作爱性a| 制服.丝袜.亚洲.中文.综合懂| 先锋资源久久| 亚洲v天堂v手机在线| 国产乱真实合集| 欧美极品xxxx| 亚洲精品一区国产| a一区二区三区| 中国女人真人一级毛片| 伊人精品成人久久综合软件| 国内精品一区二区三区| 欧美性猛交xxxx乱大交少妇| 日本道色综合久久影院| 国产一级特黄a高潮片| 好吊的妞视频这里都有| 日韩视频亚洲视频| 无码人妻丰满熟妇区96| 欧美黄色一级片视频| 欧美久久成人| 日韩电影免费网址| 免费观看h电影在线观看| 国产极品在线视频| 成人性做爰aaa片免费看不忠| 亚洲欧美日韩精品久久亚洲区| 国产毛片久久久久久国产毛片| 91美女蜜桃在线| 妞干网福利视频| 91精品国产乱| 先锋影音资源综合在线播放av| 欧美国产一区二区三区| xxxx18hd亚洲hd捆绑| 色视频在线播放| 色婷婷亚洲一区二区三区| 欧美极品色图| 91九色精品视频| 日韩一卡二卡三卡四卡| 爱爱爱免费视频在线观看| 日韩欧美国产另类| 韩国一区二区av| 在线亚洲男人天堂| 亚洲天堂2018av| 在线视频国内自拍亚洲视频| 免费的很黄很污的视频网站| 国产免费叼嘿网站免费| 99精品国产99久久久久久97| 1024手机在线观看你懂的| 日韩精品免费在线观看| 日韩欧美激情一区二区| 亚欧日韩另类中文欧美| 97在线观看免费观看| 国产成人免费看| 好了av在线| 欧美日韩一区成人| 欧美日韩爆操| 操人视频免费看| 久久偷看各类女兵18女厕嘘嘘| 欧美在线观看网址综合| 日本成人黄色网址| 嫩草影院在线观看网站成人| 亚洲午夜国产成人av电影男同| 国产农村妇女aaaaa视频| 国产一区二区三区精彩视频| 青青操视频在线观看| 欧美日韩一区二区三区高清| 亚洲久久久久久久久久久| 久久都是精品| 综合免费一区二区三区| 中文字幕在线日本| 亚洲啪啪av| 亚洲精品一区二区毛豆| 亚洲激情亚洲| 超碰超碰超碰超碰| 人妻少妇精品无码专区| 免费中文字幕视频| 精品久久中文字幕| 日本午夜免费福利视频| 精品在线免费观看视频| 一级黄色大片网站| 91在线一区二区| 国产天堂亚洲国产碰碰| 中文字幕在线观看第三页| 天天弄天天操| 欧美著名女优| 中文字幕一区二区三区av| www.自拍偷拍| 久久露脸国语精品国产91| 高清视频一区二区三区四区| 中文字幕在线免费不卡| jizzjizzjizzjizz| 日韩黄色a级片| 91成人精品观看| 正在播放久久| 欧美日韩日本国产亚洲在线| av在线第一页|