diff --git a/test_cursor_performance.py b/test_cursor_performance.py deleted file mode 100644 index acb80aa2..00000000 --- a/test_cursor_performance.py +++ /dev/null @@ -1,232 +0,0 @@ -""" -Cursor Performance Test Script -Tests system resources and Cursor IDE performance on Windows desktop environment. -""" -import psutil -import time -import json -import sys -from datetime import datetime -from pathlib import Path - - -def get_system_resources(): - """Get current system resource usage""" - cpu_percent = psutil.cpu_percent(interval=1) - cpu_count = psutil.cpu_count() - cpu_freq = psutil.cpu_freq() - memory = psutil.virtual_memory() - disk = psutil.disk_usage('C:\\') - - return { - 'cpu': { - 'usage_percent': cpu_percent, - 'cores': cpu_count, - 'frequency_mhz': cpu_freq.current if cpu_freq else None, - 'status': 'healthy' if cpu_percent < 80 else 'warning' if cpu_percent < 95 else 'critical' - }, - 'memory': { - 'total_gb': round(memory.total / (1024**3), 2), - 'used_gb': round(memory.used / (1024**3), 2), - 'available_gb': round(memory.available / (1024**3), 2), - 'usage_percent': memory.percent, - 'status': 'healthy' if memory.percent < 80 else 'warning' if memory.percent < 95 else 'critical' - }, - 'disk': { - 'total_gb': round(disk.total / (1024**3), 2), - 'used_gb': round(disk.used / (1024**3), 2), - 'free_gb': round(disk.free / (1024**3), 2), - 'usage_percent': disk.percent, - 'status': 'healthy' if disk.percent < 80 else 'warning' if disk.percent < 95 else 'critical' - } - } - - -def get_cursor_processes(): - """Get all Cursor-related processes""" - cursor_processes = [] - total_cpu = 0 - total_memory = 0 - - for proc in psutil.process_iter(['pid', 'name', 'exe', 'cpu_percent', 'memory_info', 'create_time', 'num_threads']): - try: - proc_info = proc.info - name = proc_info['name'].lower() - - # Check if it's a Cursor process - if 'cursor' in name or (proc_info.get('exe') and 'cursor' in proc_info['exe'].lower()): - cpu = proc_info.get('cpu_percent', 0) or 0 - memory = proc_info.get('memory_info', None) - memory_mb = (memory.rss / (1024**2)) if memory else 0 - - # Get more detailed info - try: - proc_obj = psutil.Process(proc_info['pid']) - num_threads = proc_obj.num_threads() - open_files = len(proc_obj.open_files()) - connections = len(proc_obj.connections()) - except: - num_threads = proc_info.get('num_threads', 0) - open_files = 0 - connections = 0 - - process_data = { - 'pid': proc_info['pid'], - 'name': proc_info['name'], - 'cpu_percent': round(cpu, 2), - 'memory_mb': round(memory_mb, 2), - 'memory_gb': round(memory_mb / 1024, 2), - 'threads': num_threads, - 'open_files': open_files, - 'connections': connections, - 'uptime_seconds': round(time.time() - proc_info.get('create_time', time.time()), 2) - } - - cursor_processes.append(process_data) - total_cpu += cpu - total_memory += memory_mb - except (psutil.NoSuchProcess, psutil.AccessDenied): - continue - - return { - 'processes': cursor_processes, - 'total_count': len(cursor_processes), - 'total_cpu_percent': round(total_cpu, 2), - 'total_memory_mb': round(total_memory, 2), - 'total_memory_gb': round(total_memory / 1024, 2) - } - - -def get_top_processes(limit=10): - """Get top resource-consuming processes""" - processes = [] - for proc in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_info']): - try: - proc_info = proc.info - cpu = proc_info.get('cpu_percent', 0) or 0 - memory = proc_info.get('memory_info', None) - memory_mb = (memory.rss / (1024**2)) if memory else 0 - - processes.append({ - 'pid': proc_info['pid'], - 'name': proc_info['name'], - 'cpu_percent': round(cpu, 2), - 'memory_mb': round(memory_mb, 2) - }) - except (psutil.NoSuchProcess, psutil.AccessDenied): - continue - - # Sort by memory usage - processes.sort(key=lambda x: x['memory_mb'], reverse=True) - return processes[:limit] - - -def run_performance_test(): - """Run comprehensive performance test""" - print("=" * 70) - print("CURSOR PERFORMANCE TEST") - print("=" * 70) - print(f"Timestamp: {datetime.now().strftime('%Y-%m-%d %H:%M:%S')}\n") - - results = { - 'timestamp': datetime.now().isoformat(), - 'system': {}, - 'cursor': {}, - 'top_processes': [] - } - - # System Resources - print("Checking System Resources...") - results['system'] = get_system_resources() - - print(f"\nCPU: {results['system']['cpu']['usage_percent']}% ({results['system']['cpu']['cores']} cores) - {results['system']['cpu']['status']}") - print(f"Memory: {results['system']['memory']['used_gb']}GB / {results['system']['memory']['total_gb']}GB ({results['system']['memory']['usage_percent']}%) - {results['system']['memory']['status']}") - print(f"Disk: {results['system']['disk']['used_gb']}GB / {results['system']['disk']['total_gb']}GB ({results['system']['disk']['usage_percent']}%) - {results['system']['disk']['status']}") - - # Cursor Processes - print("\n" + "-" * 70) - print("Checking Cursor Processes...") - results['cursor'] = get_cursor_processes() - - if results['cursor']['total_count'] > 0: - print(f"\nFound {results['cursor']['total_count']} Cursor process(es):") - print(f"Total CPU Usage: {results['cursor']['total_cpu_percent']}%") - print(f"Total Memory Usage: {results['cursor']['total_memory_gb']}GB ({results['cursor']['total_memory_mb']}MB)") - print("\nIndividual Processes:") - for proc in results['cursor']['processes']: - print(f" PID {proc['pid']:6d} | {proc['name']:20s} | CPU: {proc['cpu_percent']:6.2f}% | Memory: {proc['memory_mb']:8.2f}MB | Threads: {proc['threads']}") - else: - print("\nNo Cursor processes found. Is Cursor running?") - - # Top Processes - print("\n" + "-" * 70) - print("Top 10 Processes by Memory Usage:") - results['top_processes'] = get_top_processes(10) - for i, proc in enumerate(results['top_processes'], 1): - print(f" {i:2d}. {proc['name']:30s} | CPU: {proc['cpu_percent']:6.2f}% | Memory: {proc['memory_mb']:8.2f}MB") - - # Performance Assessment - print("\n" + "=" * 70) - print("PERFORMANCE ASSESSMENT") - print("=" * 70) - - issues = [] - recommendations = [] - - # Check system resources - if results['system']['cpu']['usage_percent'] > 80: - issues.append(f"High CPU usage: {results['system']['cpu']['usage_percent']}%") - recommendations.append("Close unnecessary applications to free up CPU resources") - - if results['system']['memory']['usage_percent'] > 80: - issues.append(f"High memory usage: {results['system']['memory']['usage_percent']}%") - recommendations.append("Close unused applications or consider adding more RAM") - - if results['system']['disk']['usage_percent'] > 80: - issues.append(f"Low disk space: {results['system']['disk']['usage_percent']}% used") - recommendations.append("Free up disk space by removing unnecessary files") - - # Check Cursor-specific issues - if results['cursor']['total_count'] > 0: - if results['cursor']['total_memory_gb'] > 2: - issues.append(f"Cursor using high memory: {results['cursor']['total_memory_gb']}GB") - recommendations.append("Consider restarting Cursor or closing unused tabs/files") - - if results['cursor']['total_cpu_percent'] > 50: - issues.append(f"Cursor using high CPU: {results['cursor']['total_cpu_percent']}%") - recommendations.append("Cursor may be indexing or processing. Wait for it to complete.") - - if issues: - print("\n⚠️ ISSUES DETECTED:") - for issue in issues: - print(f" • {issue}") - else: - print("\n✅ No major performance issues detected") - - if recommendations: - print("\n💡 RECOMMENDATIONS:") - for rec in recommendations: - print(f" • {rec}") - - # Save results to file - output_file = Path("cursor_performance_report.json") - with open(output_file, 'w') as f: - json.dump(results, f, indent=2) - print(f"\n📄 Detailed report saved to: {output_file}") - - return results - - -if __name__ == "__main__": - try: - run_performance_test() - except KeyboardInterrupt: - print("\n\nTest interrupted by user") - sys.exit(1) - except Exception as e: - print(f"\n\nError running test: {str(e)}") - import traceback - traceback.print_exc() - sys.exit(1) - -