#!/usr/bin/env python3 """ Quick memory usage comparison script Run this to see the difference between web and native versions """ import subprocess import time def get_process_memory(process_name): """Get memory usage of a process in MB""" try: result = subprocess.run( ['ps', 'aux'], capture_output=True, text=True ) total_mem = 0 count = 0 for line in result.stdout.split('\n'): if process_name.lower() in line.lower(): parts = line.split() if len(parts) > 5: # RSS is in KB, convert to MB mem_kb = float(parts[5]) total_mem += mem_kb / 1024 count += 1 return total_mem, count except Exception as e: return 0, 0 def main(): print("=" * 60) print("TechDJ Memory Usage Comparison") print("=" * 60) print() # Check Chrome chrome_mem, chrome_procs = get_process_memory('chrome') if chrome_mem > 0: print(f"🌐 Chrome (Web Panel):") print(f" Total Memory: {chrome_mem:.1f} MB") print(f" Processes: {chrome_procs}") print() else: print("🌐 Chrome: Not running") print() # Check PyQt5 qt_mem, qt_procs = get_process_memory('techdj_qt') if qt_mem > 0: print(f"💻 PyQt5 Native App:") print(f" Total Memory: {qt_mem:.1f} MB") print(f" Processes: {qt_procs}") print() else: print("💻 PyQt5 Native App: Not running") print() # Comparison if chrome_mem > 0 and qt_mem > 0: savings = chrome_mem - qt_mem percent = (savings / chrome_mem) * 100 print("=" * 60) print("📊 Comparison:") print(f" Memory Saved: {savings:.1f} MB ({percent:.1f}%)") print() # Visual bar chart max_mem = max(chrome_mem, qt_mem) chrome_bar = '█' * int((chrome_mem / max_mem) * 40) qt_bar = '█' * int((qt_mem / max_mem) * 40) print(" Chrome: " + chrome_bar + f" {chrome_mem:.0f}MB") print(" PyQt5: " + qt_bar + f" {qt_mem:.0f}MB") print() if percent > 50: print(f" ✅ PyQt5 uses {percent:.0f}% less memory!") elif percent > 25: print(f" ✅ PyQt5 uses {percent:.0f}% less memory") else: print(f" PyQt5 uses {percent:.0f}% less memory") print("=" * 60) print() print("Tip: Run both versions and execute this script to compare!") print() if __name__ == '__main__': main()