package cache
|
|
import (
|
"flag"
|
"fmt"
|
"time"
|
"sync"
|
"encoding/base64"
|
|
"basic.com/pubsub/cache.git/esutil"
|
"basic.com/pubsub/cache.git/shardmap"
|
|
"basic.com/valib/gosdk.git"
|
)
|
|
var querynum = flag.Int("querynum", 10, "the query number from database")
|
var threadnum = flag.Int("threadnum",32, "the number of thread to deal data.")
|
|
var Cmap *shardmap.ShardMap
|
func Init(){
|
flag.Parse()
|
gosdk.InitFaceExtractor(16, 0)
|
|
Cmap = shardmap.New(uint8(*threadnum))
|
|
temptime := time.Now()
|
var wg sync.WaitGroup
|
for i:=0; i<*threadnum; i++ {
|
j := i*(*querynum)
|
wg.Add(1)
|
go func(qs int){
|
defer wg.Done()
|
|
escache, err := esutil.DbPersoninfos(qs, *querynum)
|
if err != nil {
|
fmt.Println(err)
|
return
|
}
|
|
for _, value := range escache {
|
Cmap.Set(value.FaceFeature,value)
|
}
|
}(j)
|
}
|
wg.Wait()
|
fmt.Println("get number of es: ", Cmap.GetLen())
|
fmt.Println("time of get data from es.", time.Since(temptime))
|
fmt.Println()
|
}
|
|
//func main(){
|
// Init()
|
// Getdbpersonmsg("")
|
//}
|
|
func Getdbpersonmsg(teststring string, IsCompare bool) ([]interface{}) {
|
|
if !IsCompare {
|
return nil
|
}
|
|
if teststring == "" {
|
testcache, _:= esutil.DbPersoninfos(0,1)
|
teststring = testcache[0].FaceFeature
|
}
|
|
fmt.Println()
|
fmt.Println("======华丽的分割线============")
|
fmt.Println()
|
|
firsttime := time.Now()
|
Rscore := Cmap.Walk(Printest, teststring, IsCompare)
|
fmt.Println(time.Since(firsttime))
|
return Rscore
|
}
|
|
func Printest(ci, co string ) (float32){
|
|
ci_d, err := base64.StdEncoding.DecodeString(ci)
|
if err != nil {
|
fmt.Println("ci_d : error : ", err)
|
return -1
|
}
|
|
co_d, err := base64.StdEncoding.DecodeString(co)
|
if err != nil {
|
fmt.Println("co_d : error : ", err)
|
return -1
|
}
|
|
sec := gosdk.FaceCompare(ci_d, co_d)
|
return sec
|
}
|