56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			56 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								package md5helper
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								import (
							 | 
						||
| 
								 | 
							
									"crypto/md5"
							 | 
						||
| 
								 | 
							
									"encoding/hex"
							 | 
						||
| 
								 | 
							
									"fmt"
							 | 
						||
| 
								 | 
							
									"testing"
							 | 
						||
| 
								 | 
							
								)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestMD52(t *testing.T) {
							 | 
						||
| 
								 | 
							
									got := MD52("Qq123456")
							 | 
						||
| 
								 | 
							
									fmt.Println(got)
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func TestMD5(t *testing.T) {
							 | 
						||
| 
								 | 
							
									got := []byte("Qq123456")
							 | 
						||
| 
								 | 
							
									s := md5.New()
							 | 
						||
| 
								 | 
							
									s.Write(got)
							 | 
						||
| 
								 | 
							
									fmt.Println(hex.EncodeToString(s.Sum(nil)))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									cc := md5.Sum(got)
							 | 
						||
| 
								 | 
							
									fmt.Println(hex.EncodeToString(cc[:]))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
									fmt.Printf("%x\n", md5.Sum(got))
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// go test -bench=_QE_ -benchmem -run=^$
							 | 
						||
| 
								 | 
							
								func Benchmark_QE_1(b *testing.B) {
							 | 
						||
| 
								 | 
							
									for i := 0; i < b.N; i++ {
							 | 
						||
| 
								 | 
							
										input := `Qq123456`
							 | 
						||
| 
								 | 
							
										s := md5.New()
							 | 
						||
| 
								 | 
							
										s.Write([]byte(input))
							 | 
						||
| 
								 | 
							
										hex.EncodeToString(s.Sum(nil))
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func Benchmark_QE_2(b *testing.B) {
							 | 
						||
| 
								 | 
							
									for i := 0; i < b.N; i++ {
							 | 
						||
| 
								 | 
							
										input := `Qq123456`
							 | 
						||
| 
								 | 
							
										cc := md5.Sum([]byte(input))
							 | 
						||
| 
								 | 
							
										hex.EncodeToString(cc[:])
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								func Benchmark_QE_3(b *testing.B) {
							 | 
						||
| 
								 | 
							
									for i := 0; i < b.N; i++ {
							 | 
						||
| 
								 | 
							
										input := `Qq123456`
							 | 
						||
| 
								 | 
							
										fmt.Sprintf("%x\n", md5.Sum([]byte(input)))
							 | 
						||
| 
								 | 
							
									}
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// Benchmark_QE_1-6         6354160               189.8 ns/op            48 B/op          2 allocs/op
							 | 
						||
| 
								 | 
							
								// Benchmark_QE_2-6         7352328               162.9 ns/op            32 B/op          1 allocs/op
							 | 
						||
| 
								 | 
							
								// Benchmark_QE_3-6         3007480               396.9 ns/op            80 B/op          3 allocs/op
							 |