AppleScript MacOS Automation Frameworkünde Event Bridge Performans Sorunları
AppleScript macos üzerinde uygulamalarla haberleşmek için apple event mekanizmasını kullanır event bridge olarak adlandırılan yapı script ile hedef uygulama arasındaki bu mesajlaşma katmanını temsil eder küçük işlemlerde fark edilmez ancak işlem sayısı arttıkça performans sorunları belirgin hale gelir
Event Bridge Nedir ?
Event bridge script tarafından gönderilen komutların hedef uygulamaya iletilmesini ve yanıtın geri alınmasını sağlayan iletişim katmanıdır her komut bir mesajlaşma süreci oluşturur
• Komut hedef uygulamaya gönderilir
• Uygulama komutu işler
• Sonuç script tarafına döner
• Script yanıt gelmeden devam etmez
Performans Sorunları Neden Oluşur ?
Performans düşüşü genellikle işlemin kendisinden değil komutların sürekli gidip gelmesinden kaynaklanır her mesajlaşma belirli bir maliyet oluşturur
• Çok fazla round trip oluşması
• Her döngüde tekrar tekrar veri çağrılması
• Apple event serileştirme maliyeti
• Hedef uygulamanın ana iş parçacığında çalışması
• Ui scripting kullanılması
En Sık Görülen Yavaşlama Senaryoları
Bazı kullanım şekilleri performans sorunlarını daha hızlı ortaya çıkarır
• Döngü içinde sürekli get veya set çağrısı yapmak
• Her eleman için ayrı ayrı komut göndermek
• Finder üzerinden büyük dosya işlemleri yapmak
• System events ile arayüz otomasyonu yapmak
Round Trip Problemi
En büyük performans kaynağı hedef uygulamaya gereğinden fazla mesaj gönderilmesidir her küçük işlem için ayrı çağrı yapmak toplam süreyi ciddi şekilde artırır
• Tek tek veri almak yerine toplu almak
• Tek tek set etmek yerine bir defada yazmak
• Aynı bilgiyi tekrar tekrar istememek
Performansı Artırma Yöntemleri
Event bridge performansını iyileştirmek için komut sayısını azaltmak temel yaklaşımdır
Komutları Gruplandırmak
Mümkün olduğunca işlemleri tek blok içinde toplamak gerekir
• Gereksiz tell bloklarını azaltmak
• Veriyi tek seferde almak
• Sonucu tek seferde uygulamak
Veriyi Yerel Olarak İşlemek
Veriyi hedef uygulamadan aldıktan sonra işlemleri script içinde yapmak daha hızlıdır
• Önce listeyi çekmek
• Filtreleme ve hesaplamayı script tarafında yapmak
• Sonucu geri yazmak
Ui Scriptingten Kaçınmak
Ui scripting apple event üzerinden en yavaş yöntemlerden biridir mümkünse uygulamanın kendi scripting sözlüğü kullanılmalıdır
• Buton tıklamak yerine doğrudan komut kullanmak
• Gereksiz beklemeleri azaltmak
• Arayüz otomasyonunu minimumda tutmak
Ölçüm Yapmanın Önemi
Performans sorunu yaşanıyorsa hangi bölümün yavaş olduğunu belirlemek gerekir
• Kod bloklarını ayrı ayrı test etmek
• Zaman ölçümü yapmak
• En yavaş kısmı optimize etmek
AppleScript tarafında event bridge performans sorunları genellikle fazla mesajlaşmadan kaynaklanır komut sayısını azaltmak veriyi toplu işlemek ve ui scriptingten uzak durmak performansı belirgin şekilde artırır doğru yapılandırılmış scriptlerde gecikme ciddi oranda düşürülebilir
