diff --git a/src/utils/utils.go b/src/utils/utils.go index f7a4166..19c0e6e 100644 --- a/src/utils/utils.go +++ b/src/utils/utils.go @@ -94,6 +94,15 @@ func IMOHashFile(fname string) (hash []byte, err error) { return } +var imofull = imohash.NewCustom(0, 0) + +// IMOHashFileFull returns imohash of full file +func IMOHashFileFull(fname string) (hash []byte, err error) { + b, err := imofull.SumFile(fname) + hash = b[:] + return +} + // XXHashFile returns the xxhash of a file func XXHashFile(fname string) (hash256 []byte, err error) { f, err := os.Open(fname) diff --git a/src/utils/utils_test.go b/src/utils/utils_test.go index a94fd7c..93ac39c 100644 --- a/src/utils/utils_test.go +++ b/src/utils/utils_test.go @@ -35,6 +35,7 @@ func BenchmarkXXHash(b *testing.B) { XXHashFile("bigfile.test") } } + func BenchmarkImoHash(b *testing.B) { bigFile() b.ResetTimer() @@ -43,6 +44,14 @@ func BenchmarkImoHash(b *testing.B) { } } +func BenchmarkImoHashFull(b *testing.B) { + bigFile() + b.ResetTimer() + for i := 0; i < b.N; i++ { + IMOHashFileFull("bigfile.test") + } +} + func BenchmarkSha256(b *testing.B) { b.ResetTimer() for i := 0; i < b.N; i++ {