From 7f455f2d8fa7eb1255d9a77bcf09b583367947bc Mon Sep 17 00:00:00 2001 From: lvmeng <848755140@qq.com> Date: Mon, 13 Apr 2026 17:20:51 +0800 Subject: [PATCH] =?UTF-8?q?perf(FoodModule):=20=E6=8F=90=E9=AB=98=E9=A3=9F?= =?UTF-8?q?=E7=89=A9=E6=9F=A5=E8=AF=A2=E6=80=A7=E8=83=BD=E5=B9=B6=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E6=8E=92=E5=BA=8F=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将默认查询数量从15增加到50 - 移除不必要的分数阈值过滤条件 - 移除复杂的按名称分组和计数逻辑 - 简化排序算法,直接按分数排序 - 添加调试日志输出结果数据 --- .../com/sw/dualscreen/objbox/FoodModule.kt | 40 +++++++++---------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/sw/dualscreen/objbox/FoodModule.kt b/app/src/main/java/com/sw/dualscreen/objbox/FoodModule.kt index d9f958e..3c1b1d1 100644 --- a/app/src/main/java/com/sw/dualscreen/objbox/FoodModule.kt +++ b/app/src/main/java/com/sw/dualscreen/objbox/FoodModule.kt @@ -124,7 +124,7 @@ object FoodModule { suspend fun queryFoodNameScore( floatArray: FloatArray?, - queryCount: Int = 15 + queryCount: Int = 50 ): List { if (floatArray == null) return emptyList() val startTime = System.currentTimeMillis() @@ -151,7 +151,7 @@ object FoodModule { return nameScoreList } - suspend fun getFoodScoreList(bitmap: Bitmap, queryCount: Int = 15): List { + suspend fun getFoodScoreList(bitmap: Bitmap, queryCount: Int = 50): List { val startTime = System.currentTimeMillis() val floatArray = bitmap2FloatArray(bitmap, false) Timber.tag(TAG).d("bitmap2FloatArray,耗时:${System.currentTimeMillis() - startTime}") @@ -161,28 +161,26 @@ object FoodModule { return emptyList() } val maxScoreList = nameScoreList - .filter { it.score < 1 - THRESHOLD } +// .filter { it.score < 1 - THRESHOLD } .groupBy { it.name } .map { (_, value) -> value.minByOrNull { it.score }!! } .toMutableList() - val map = mutableMapOf() - nameScoreList.forEach { - val key = it.name - val count = map[key] ?: 0 - map[key] = count + 1 - } - val orderList = map.entries.sortedByDescending { it.value }.map { it.key }.toMutableList() - val firstFood = nameScoreList[0].name - orderList.remove(firstFood) - orderList.add(0, firstFood) - - val sortedScoreList = maxScoreList.sortedWith(compareBy { - orderList.indexOf(it.name) - }) - if (bitmap.isRecycled.not()) { - bitmap.recycle() - } - //Timber.tag("FoodModule").d("getFoodScoreList数据:${sortedScoreList.toJsonString()}") +// val map = mutableMapOf() +// nameScoreList.forEach { +// val key = it.name +// val count = map[key] ?: 0 +// map[key] = count + 1 +// } +// val orderList = map.entries.sortedByDescending { it.value }.map { it.key }.toMutableList() +// val firstFood = nameScoreList[0].name +// orderList.remove(firstFood) +// orderList.add(0, firstFood) +// +// val sortedScoreList = maxScoreList.sortedWith(compareBy { +// orderList.indexOf(it.name) +// }) + val sortedScoreList = maxScoreList.sortedBy { it.score } + Timber.tag("FoodModule").d("getFoodScoreList数据:${sortedScoreList.toString()}") return sortedScoreList }