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  }