Skip to main content
Glama

MemOS-MCP

by qinshu1109
Apache 2.0
3
  • Linux
  • Apple
test_performance_optimization.py6.75 kB
#!/usr/bin/env python3 """ MemOS性能优化测试脚本 测试Qdrant参数优化和缓存效果 """ import time import statistics from typing import List, Dict, Any from mvp_memory import create_mvp_memory_manager from enhanced_simple_memos import EnhancedSimpleMemOS def test_search_performance(mvp_manager, queries: List[str], iterations: int = 3) -> Dict[str, Any]: """测试搜索性能""" print(f"🧪 测试搜索性能 ({iterations}次迭代)") # 清空缓存确保公平测试 if hasattr(mvp_manager.memory, 'clear_caches'): mvp_manager.memory.clear_caches() # 第一次搜索(无缓存) first_search_times = [] for query in queries: start_time = time.time() results = mvp_manager.recall(query, top_k=5) duration = time.time() - start_time first_search_times.append(duration) print(f" 查询: '{query}' - {duration:.3f}s ({len(results)}条结果)") # 重复搜索(有缓存) print(f"\n🎯 测试缓存效果...") cached_search_times = [] for query in queries: start_time = time.time() results = mvp_manager.recall(query, top_k=5) duration = time.time() - start_time cached_search_times.append(duration) print(f" 查询: '{query}' - {duration:.3f}s (缓存)") # 计算统计信息 avg_first = statistics.mean(first_search_times) avg_cached = statistics.mean(cached_search_times) improvement = ((avg_first - avg_cached) / avg_first * 100) if avg_first > 0 else 0 return { "first_search_times": first_search_times, "cached_search_times": cached_search_times, "avg_first_search": avg_first, "avg_cached_search": avg_cached, "performance_improvement": improvement, "target_met": avg_first < 1.0 # 目标:1秒以内 } def test_different_data_sizes(): """测试不同数据量下的性能""" print("📊 测试不同数据量下的性能表现") data_sizes = [100, 500, 1000, 2000] test_queries = [ "MemOS智能记忆系统", "Qdrant向量数据库", "性能优化技术", "缓存机制实现" ] results = {} for size in data_sizes: print(f"\n🔢 测试数据量: {size}条记忆") # 创建测试数据 memos = EnhancedSimpleMemOS(f"./test_data_{size}") # 添加测试记忆 for i in range(size): content = f"测试记忆{i}: 这是关于技术{i%10}的内容,包含性能优化和系统设计的相关信息" tags = [f"技术{i%10}", "测试", "性能"] memos.add_memory(content, tags=tags) # 测试搜索性能 search_times = [] for query in test_queries: start_time = time.time() search_results = memos.search_memories(query, limit=5, use_reranker=True) duration = time.time() - start_time search_times.append(duration) avg_time = statistics.mean(search_times) results[size] = { "avg_search_time": avg_time, "search_times": search_times, "target_met": avg_time < 1.0 } print(f" 平均搜索时间: {avg_time:.3f}s") print(f" 目标达成: {'✅' if avg_time < 1.0 else '❌'} (目标<1s)") # 显示缓存统计 if hasattr(memos, 'print_performance_stats'): memos.print_performance_stats() return results def test_cache_hit_rates(): """测试缓存命中率""" print("🎯 测试缓存命中率") mvp = create_mvp_memory_manager() # 准备测试查询 test_queries = [ "MemOS系统架构", "Qdrant性能优化", "缓存机制设计", "向量搜索算法", "智能记忆管理" ] # 清空缓存 if hasattr(mvp.memory, 'clear_caches'): mvp.memory.clear_caches() # 第一轮搜索(建立缓存) print("第一轮搜索(建立缓存):") for query in test_queries: results = mvp.recall(query, top_k=3) print(f" {query}: {len(results)}条结果") # 第二轮搜索(测试缓存命中) print("\n第二轮搜索(测试缓存命中):") cache_hit_count = 0 for query in test_queries: start_time = time.time() results = mvp.recall(query, top_k=3) duration = time.time() - start_time # 如果搜索时间很短,说明命中缓存 is_cache_hit = duration < 0.1 if is_cache_hit: cache_hit_count += 1 print(f" {query}: {duration:.3f}s {'🎯' if is_cache_hit else '❌'}") hit_rate = (cache_hit_count / len(test_queries)) * 100 print(f"\n缓存命中率: {hit_rate:.1f}% ({cache_hit_count}/{len(test_queries)})") print(f"目标达成: {'✅' if hit_rate >= 50 else '❌'} (目标≥50%)") return hit_rate def main(): """主测试函数""" print("🚀 MemOS性能优化测试") print("=" * 50) # 测试1: 基础搜索性能 print("\n📋 测试1: 基础搜索性能") mvp = create_mvp_memory_manager() test_queries = [ "MemOS智能记忆系统", "Qdrant向量数据库性能", "缓存优化技术" ] perf_results = test_search_performance(mvp, test_queries) print(f"\n📊 性能测试结果:") print(f" 平均首次搜索: {perf_results['avg_first_search']:.3f}s") print(f" 平均缓存搜索: {perf_results['avg_cached_search']:.3f}s") print(f" 性能提升: {perf_results['performance_improvement']:.1f}%") print(f" 目标达成: {'✅' if perf_results['target_met'] else '❌'} (目标<1s)") # 测试2: 缓存命中率 print(f"\n📋 测试2: 缓存命中率") hit_rate = test_cache_hit_rates() # 测试3: 不同数据量性能 print(f"\n📋 测试3: 不同数据量性能") size_results = test_different_data_sizes() # 总结报告 print(f"\n🎯 性能优化总结报告") print("=" * 50) print(f"✅ 搜索延迟优化: {perf_results['avg_first_search']:.3f}s (目标<1s)") print(f"✅ 缓存命中率: {hit_rate:.1f}% (目标≥50%)") print(f"✅ 性能提升: {perf_results['performance_improvement']:.1f}%") # 检查是否达到所有目标 all_targets_met = ( perf_results['target_met'] and hit_rate >= 50 and perf_results['performance_improvement'] > 80 ) print(f"\n🏆 总体评估: {'✅ 所有目标达成' if all_targets_met else '⚠️ 部分目标未达成'}") if __name__ == "__main__": main()

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/qinshu1109/memos-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server