Delete test_cursor_performance.py
This commit is contained in:
@@ -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)
|
|
||||||
|
|
||||||
|
|
||||||
Reference in New Issue
Block a user