Use a type switch instead, and Use unexported NewSharded in test

This commit is contained in:
Patrick Mylund Nielsen 2012-08-17 11:35:20 +02:00
parent 13225a8ae4
commit 9cc10f6f2f
2 changed files with 28 additions and 31 deletions

View File

@ -7,7 +7,6 @@ import (
"hash/fnv" "hash/fnv"
"io" "io"
"os" "os"
"reflect"
"runtime" "runtime"
"sync" "sync"
"time" "time"
@ -142,38 +141,36 @@ func (c *cache) IncrementFloat(k string, n float64) error {
c.Unlock() c.Unlock()
return fmt.Errorf("item not found") return fmt.Errorf("item not found")
} }
switch v.Object.(type) {
t := reflect.TypeOf(v.Object) case int:
switch t.Kind() { v.Object = v.Object.(int) + int(n)
case int8:
v.Object = v.Object.(int8) + int8(n)
case int16:
v.Object = v.Object.(int16) + int16(n)
case int32:
v.Object = v.Object.(int32) + int32(n)
case int64:
v.Object = v.Object.(int64) + int64(n)
case uint:
v.Object = v.Object.(uint) + uint(n)
case uintptr:
v.Object = v.Object.(uintptr) + uintptr(n)
case uint8:
v.Object = v.Object.(uint8) + uint8(n)
case uint16:
v.Object = v.Object.(uint16) + uint16(n)
case uint32:
v.Object = v.Object.(uint32) + uint32(n)
case uint64:
v.Object = v.Object.(uint64) + uint64(n)
case float32:
v.Object = v.Object.(float32) + float32(n)
case float64:
v.Object = v.Object.(float64) + n
default: default:
c.Unlock() c.Unlock()
return fmt.Errorf("The value of %s is not an integer", k) return fmt.Errorf("The value of %s is not an integer", k)
case reflect.Uint:
v.Object = v.Object.(uint) + uint(n)
case reflect.Uintptr:
v.Object = v.Object.(uintptr) + uintptr(n)
case reflect.Uint8:
v.Object = v.Object.(uint8) + uint8(n)
case reflect.Uint16:
v.Object = v.Object.(uint16) + uint16(n)
case reflect.Uint32:
v.Object = v.Object.(uint32) + uint32(n)
case reflect.Uint64:
v.Object = v.Object.(uint64) + uint64(n)
case reflect.Int:
v.Object = v.Object.(int) + int(n)
case reflect.Int8:
v.Object = v.Object.(int8) + int8(n)
case reflect.Int16:
v.Object = v.Object.(int16) + int16(n)
case reflect.Int32:
v.Object = v.Object.(int32) + int32(n)
case reflect.Int64:
v.Object = v.Object.(int64) + int64(n)
case reflect.Float32:
v.Object = v.Object.(float32) + float32(n)
case reflect.Float64:
v.Object = v.Object.(float64) + n
} }
c.Unlock() c.Unlock()
return nil return nil

View File

@ -734,7 +734,7 @@ func BenchmarkCacheGetManyConcurrent(b *testing.B) {
func BenchmarkShardedCacheGetManyConcurrent(b *testing.B) { func BenchmarkShardedCacheGetManyConcurrent(b *testing.B) {
b.StopTimer() b.StopTimer()
n := 10000 n := 10000
tsc := NewSharded(20, 0, 0) tsc := unexportedNewSharded(20, 0, 0)
keys := make([]string, n) keys := make([]string, n)
for i := 0; i < n; i++ { for i := 0; i < n; i++ {
k := "foo" + strconv.Itoa(n) k := "foo" + strconv.Itoa(n)