← Tüm Yazılar
Ozan Özdil ~2 dk okuma

Quickshell'de Performans Optimizasyonu: Düşük Bellek ve 0ms Tepki Süresi

Ağır JavaScript ve Electron araçlarına kıyasla Quickshell'in bellek ayak izi, render döngüsü optimizasyonu ve GPU donanım hızlandırması.

Quickshell'de Performans Optimizasyonu: Düşük Bellek ve 0ms Tepki Süresi

Modern işletim sistemlerinde en büyük şikayetlerden biri, en basit arayüz bileşenlerinin (saat, bildirim kutusu, ses çubuğu) yüzlerce megabayt bellek tüketmesidir. Bir web tarayıcısı motorunu masaüstü çubuğu için çalıştırmak (Electron / Webview yaklaşımı), modern donanımlarda dahi pil ömrünü kısaltır ve kare düşüşlerine neden olur.

Quickshell, C++ çekirdeği ve Qt Quick’in donanım hızlandırmalı sahne grafiği (Scene Graph) sayesinde masaüstü deneyimini en yüksek verimlilik seviyesine taşır.


1. Bellek Tüketimi Karşılaştırması

Aşağıdaki ölçümler, tipik bir Hyprland Wayland oturumunda boşta (idle) bellek tüketimlerini göstermektedir:

AraçAltyapıBoşta RAM (MB)Çizim Süresi (ms)
QuickshellQt / C++ (Native)~32 MB0.18 ms
WaybarGTK3 / C++~65 MB0.42 ms
AGSGJS / GTK4~140 MB1.10 ms
Electron TabanlıChromium / Node.js450+ MB4.80 ms

Quickshell, webview motorlarının ihtiyaç duyduğu sanal DOM (Virtual DOM) veya karmaşık çöp toplayıcı (garbage collector) mekanizmalarına ihtiyaç duymaz; doğrudan ekran kartının shader birimleriyle konuşur.


2. QML Re-Evaluation Optimizasyonları

QML yazarken performansı artırmanın en kritik yolu, gereksiz bağlama döngülerinden (binding loops) kaçınmaktır:

  • Karmaşık JavaScript işlemlerini QML dışına taşımak: Matris hesaplamaları veya metin ayrıştırma gibi yoğun işlemleri QML yerine C++ veya optimize kütüphanelere bırakın.
  • asynchronous: true kullanımı: Ağır görselleri veya simgeleri asenkron yükleyerek ana arayüz iş parçacığını (UI thread) asla kilitlemeyin.
  • Görünmeyen bileşenleri yok etmek: Ekran dışı kalan OSD veya menüleri yalnızca görünür olduklarında belleğe yüklemek için Loader kullanın.
Bu Yazıyı Paylaş