Golang 文件 MD5 计算效率优化 - 代码示例
以下是使用 Go 语言计算文件 MD5 的示例代码,包括了一些优化措施:
package main
import (
"crypto/md5"
"fmt"
"io"
"os"
"time"
)
func main() {
start := time.Now()
file, err := os.Open('test.txt')
if err != nil {
fmt.Println("Error opening file:", err)
return
}
defer file.Close()
hash := md5.New()
if _, err := io.Copy(hash, file); err != nil {
fmt.Println("Error calculating MD5:", err)
return
}
fmt.Printf("MD5 hash of file: %x\n", hash.Sum(nil))
fmt.Printf("Time taken: %s\n", time.Since(start))
}
这个示例代码采用了以下优化措施:
-
使用
io.Copy函数将文件内容复制到md5.New()函数返回的hash对象中,而不是先将整个文件读入内存再计算 MD5。这样可以避免内存溢出问题,也大大提高了效率。 -
使用
defer语句关闭文件句柄,确保在函数返回前关闭文件。 -
使用
time包记录程序运行时间,方便测试和优化。
原文地址: https://www.cveoy.top/t/topic/mrKj 著作权归作者所有。请勿转载和采集!