From b5687ecf98b999ad535e242c5d25cc5be328af77 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 13 九月 2024 11:17:00 +0800
Subject: [PATCH] add rlock in shardmap walk
---
compare/compare.go | 63 +++++++++----------------------
1 files changed, 19 insertions(+), 44 deletions(-)
diff --git a/compare/compare.go b/compare/compare.go
index ae83818..e4af573 100644
--- a/compare/compare.go
+++ b/compare/compare.go
@@ -2,10 +2,9 @@
import (
"fmt"
- "sdkCompare/util"
"strconv"
- "sdkCompare/cache"
+ "sdkCompare/util"
"basic.com/pubsub/protomsg.git"
"basic.com/valib/logger.git"
@@ -14,12 +13,12 @@
const thresholdLimit = float32(30)
-func GetComparePersonBaseInfo(args protomsg.CompareArgs) []byte {
+func Walk(args protomsg.CompareArgs) []byte {
if args.FaceFeature == nil {
return nil
}
- floatFeat := util.ByteSlice2float32Slice(args.FaceFeature)
+ fFeature := util.ByteSlice2float32Slice(args.FaceFeature)
//鎸囧畾鏈�浣庡垎
baseScore := thresholdLimit
@@ -31,53 +30,29 @@
baseScore = 0
}
- var scResult protomsg.SdkCompareResult
+ logger.Debugf("Compare args treeNodes %+v, is all %v, target %s, feature len %d", args.TreeNodes, args.IsCompareAll, args.CompareTarget, len(fFeature))
- var walkedArea = make(map[string]struct{}, 0)
- // 浼樺厛姣斿浼犲叆鐨勫皬鍖篿d
- if args.TreeNodes != nil && len(args.TreeNodes) > 0 {
- for _, id := range args.TreeNodes {
- if _, ok := cache.CacheMap.Area[id]; ok {
- targets := cache.CacheMap.Area[id].Walk(DoSdkCompare, floatFeat, baseScore)
- if len(targets) > 0 {
- scResult.CompareResult = append(scResult.CompareResult, targets...)
- }
+ var response protomsg.SdkCompareResult
- walkedArea[id] = struct{}{}
- }
- }
-
- if len(scResult.CompareResult) > 0 {
- goto done
- }
+ // 鎶撴媿搴撴瘮瀵�
+ switch args.CompareTarget {
+ case "realName":
+ response = realNamePersonsCompere(args, fFeature, baseScore)
+ case "keyPerson":
+ response = keyPersonsCompere(args, fFeature, baseScore)
+ default:
+ response = capturePersonsCompere(args, fFeature, baseScore)
}
- // 姣斿浠ュ鐨勫皬鍖�
- if !args.IsCompareAll && len(args.TreeNodes) > 0 {
- baseScore += 20
+ logger.Debugf("Compare target %s result len %d", args.CompareTarget, len(response.CompareResult))
+
+ if len(response.CompareResult) > 0 {
+ logger.Debugf("Compare result %+v", response.CompareResult)
}
- for key, val := range cache.CacheMap.Area {
- if _, ok := walkedArea[key]; ok {
- continue
- }
-
- targets := val.Walk(DoSdkCompare, floatFeat, baseScore)
- if len(targets) > 0 {
- scResult.CompareResult = append(scResult.CompareResult, targets...)
- // todo 娣诲姞灏忓尯澶栫殑鍏宠仈鍏崇郴, 涓嬫浼樺厛姣斿
- }
- }
-
-done:
- logger.Debugf("姣斿缁撴灉 %d鏉�", len(scResult.CompareResult))
- if len(scResult.CompareResult) > 0 {
- logger.Debugf("姣斿缁撴灉%+v", scResult.CompareResult)
- }
-
- buf, err := proto.Marshal(&scResult)
+ buf, err := proto.Marshal(&response)
if err != nil {
- logger.Error("scResult Marshal error!", err)
+ logger.Error("response Marshal error!", err)
return nil
}
--
Gitblit v1.8.0