github.com/claygod/keyhash@v0.0.0-20221016122700-ce1d5aba3080/keyhash_bench_test.go (about) 1 package KeyHash 2 3 // KeyHash 4 // Bench 5 // Copyright © 2016 Eduard Sesigin. All rights reserved. Contacts: <claygod@yandex.ru> 6 7 import ( 8 "strconv" 9 "testing" 10 ) 11 12 const ADD_PATH_COUNT = 500001 13 14 // Test claygod/KeyHash Min ns/op 15 func BenchmarkKeyHashMin(b *testing.B) { 16 kh := New() 17 for i := ADD_PATH_COUNT; i > 0; i-- { 18 kh.Min("a" + strconv.Itoa(i)) 19 } 20 } 21 22 // Test claygod/KeyHash Mid ns/op 23 func BenchmarkKeyHashMid(b *testing.B) { 24 kh := New() 25 for i := ADD_PATH_COUNT; i > 0; i-- { 26 kh.Mid("a" + strconv.Itoa(i)) 27 } 28 } 29 30 // Test claygod/KeyHash Max ns/op 31 func BenchmarkKeyHashMax(b *testing.B) { 32 kh := New() 33 for i := ADD_PATH_COUNT; i > 0; i-- { 34 kh.Max("a" + strconv.Itoa(i)) 35 } 36 } 37 38 // Test claygod/KeyHash Short String key ns/op 39 func BenchmarkKeyHashShortStringKey(b *testing.B) { 40 b.StopTimer() 41 m := make(map[string]int) 42 for i := ADD_PATH_COUNT; i > 0; i-- { 43 x := strconv.Itoa(i) 44 m[x] = i 45 } 46 b.StartTimer() 47 for i := ADD_PATH_COUNT; i > 0; i-- { 48 m["2"] = m["1"] 49 m["1000"] = m["1001"] 50 m["5000"] = m["5001"] 51 m["9999"] = m["9991"] 52 m["100000"] = m["100001"] 53 m["200000"] = m["200001"] 54 55 } 56 } 57 58 // Test claygod/KeyHash Long String key ns/op 59 func BenchmarkKeyHashLongStringKey(b *testing.B) { 60 b.StopTimer() 61 m := make(map[string]int) 62 for i := ADD_PATH_COUNT; i > 0; i-- { 63 x := strconv.Itoa(i) + " this very long strring key" 64 m[x] = i 65 } 66 b.StartTimer() 67 for i := ADD_PATH_COUNT; i > 0; i-- { 68 m["2 this very long strring key"] = m["1 this very long strring key"] 69 m["1000 this very long strring key"] = m["1001 this very long strring key"] 70 m["5000 this very long strring key"] = m["5001 this very long strring key"] 71 m["9999 this very long strring key"] = m["9991 this very long strring key"] 72 m["100000 this very long strring key"] = m["100001 this very long strring key"] 73 m["200000 this very long strring key"] = m["200001 this very long strring key"] 74 75 } 76 } 77 78 // Test claygod/KeyHash uint64 key ns/op 79 func BenchmarkKeyHashUint64Key(b *testing.B) { 80 b.StopTimer() 81 m := make(map[uint64]int) 82 for i := ADD_PATH_COUNT; i > 0; i-- { 83 x := uint64(i) 84 m[x] = i 85 } 86 b.StartTimer() 87 for i := ADD_PATH_COUNT; i > 0; i-- { 88 m[2] = m[1] 89 m[1000] = m[1001] 90 m[5000] = m[5001] 91 m[9999] = m[9991] 92 m[100000] = m[100001] 93 m[200000] = m[200001] 94 95 } 96 }