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

master
Patrick Mylund Nielsen 12 years ago
parent 13225a8ae4
commit 9cc10f6f2f

@ -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)
default: case int8:
c.Unlock() v.Object = v.Object.(int8) + int8(n)
return fmt.Errorf("The value of %s is not an integer", k) case int16:
case reflect.Uint: 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) v.Object = v.Object.(uint) + uint(n)
case reflect.Uintptr: case uintptr:
v.Object = v.Object.(uintptr) + uintptr(n) v.Object = v.Object.(uintptr) + uintptr(n)
case reflect.Uint8: case uint8:
v.Object = v.Object.(uint8) + uint8(n) v.Object = v.Object.(uint8) + uint8(n)
case reflect.Uint16: case uint16:
v.Object = v.Object.(uint16) + uint16(n) v.Object = v.Object.(uint16) + uint16(n)
case reflect.Uint32: case uint32:
v.Object = v.Object.(uint32) + uint32(n) v.Object = v.Object.(uint32) + uint32(n)
case reflect.Uint64: case uint64:
v.Object = v.Object.(uint64) + uint64(n) v.Object = v.Object.(uint64) + uint64(n)
case reflect.Int: case float32:
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) v.Object = v.Object.(float32) + float32(n)
case reflect.Float64: case float64:
v.Object = v.Object.(float64) + n v.Object = v.Object.(float64) + n
default:
c.Unlock()
return fmt.Errorf("The value of %s is not an integer", k)
} }
c.Unlock() c.Unlock()
return nil return nil

@ -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)

Loading…
Cancel
Save