Flutter İle Geliştirdiğiniz Mobil Uygulamalarınızın Performansını Arttırın(Isolate Kavramı)

Semih
4 min readMar 15, 2022

Uygulamamızın performansını arttırmak, daha efektif kullanım elde etmek ve business işlemlerinizi daha kısa sürede tamamlamak son derece önemlidir. Dart dili de uygulamamızı daha performanslı kullanmak için bizlere yeni Isolate’ler üzerinden işlem yapabilmemizi sağlıyor.

Bu yazıda:

Single Thread Nedir ?

Event Loop Nedir ?

Isolate Kavramı Nedir ?

Isolate Kavramı Neden Önemlidir ?

Nerelerde Kullanabiliriz ?

Isolate Kullanımı İle Bir Örnek

yapacağız. O zaman hemen başlayalım.

Single Thread Nedir ?

Öncelikle Single Thread kavramını kısaca özetleyelim. Thread(İş parçacığı) processlerimizin yani işlemlerimizin yürütüldüğü alandır. Bir işlem başlatıldığında ona bellek ve kaynaklar atanır ve bunlar tek bir süreç üzerinden gerçekleşir.

Event Loop Nedir ?

Uygulamamız başlatıldığından itibaren duraklayana kadar arada birtakım event’ler gerçekleşir. Uygulamamız bu event’lerin ne zaman ve nasıl bir sırayla gerçekleşeceğini bilemez. Bu yüzden uygulama bir Event Loop üzerinden çalıştırılır. Böylelikle uygulama düzenli bir sıra şeklinde çalışır.

Dart Dili Nasıl Çalışıyor ?

Dart dili de Single Thread çalışan bir dildir. Bu nedenle, dil, kodun yürütülmesini programlamak için bir Event Loop döngüsü kullanır.

Nedir bu Isolate ?

Isolate’ler sayesinde de tüm dart kodunun yürütülmesi sağlanır. Uygulamamız tek bir isolate üzerinden(main) çalışır. Ancak dart dili bizlere ek isolate’ler ile işlem yapabilmemizi sağlar.

Isolate Kavramı Neden Önemlidir ?

Biz Flutter ile uygulamalarımızı geliştirirken tek bir isolate üzerinden(main) bu işlemler gerçekleşir demiştik. Bu bize yüklü bir ek işlem yaptığımızda dezavantaj olarak dönebilir. Uygulamalarımızda hafif takılmalar yaşayabiliriz. Bunun önüne geçmek için ve uygulamamızı daha efektif, performanslı kullanmak için yeni isolateler üzerinden işlem yapabiliriz. Böylelikle diğer işlemlerin döngüde sırasını beklemek yerine paralel bir şekilde kodumuzu yürütebiliriz. Bu da bizlere çok daha kısa bir sürede işlemimizi bitirmemizi sağlar.

Nerelerde Kullanabiliriz ?

Global tanımlanmış herhangi bir fonksiyonda kullanabilirsiniz. Uygulama açılışını hızlandırmak için, json Decode Encode işlemleriniz için ve daha farklı işlemleriniz için kullanabilirsiniz.

Isolate Kullanımına Bir Örnek

Şimdi de bir örnek yapalım. Yeni bir isolate üzerinden işlem yapmak için compute veya Isolate.spawn fonksiyonları üzerinden yapabiliriz. Bunun yanı sıra yazının sonunda da paylaşacağım paketler ile de yapmak mümkün. Kavramı anlamak için bu yazıda for işlemi ile örnek yapacağım. Gerçek uygulamalarınızda bu bir yüklü Json decode, encode işlemleri de olabilirdi.

Öncelikle herhangi bir class’a bağlı olmayan global bir fonksiyon oluşturalım. Fonksiyon int bir parametresi alsın ve içinde for döngüsü olsun.

Ardından ekranımıza animasyon ve 2 adet buton ekleyelim.

Şimdi de Main Isolate butonuna basalım bakalım neler olacak. 🤔

Eveet, göründüğü üzere uygulamamız patladı. Şimdi de bunu compute fonksiyonu ile New Isolate butonu üzerinden deneyelim.

Sol tarafta CALL STACK üzerinde de görüldüğü gibi main’in yanında yeni bir _spawn oluştu ve uygulamamızda herhangi bir problem yaşanmadı yeni isolate üzerinden main isolate’ini kasmadan compute ile sarmaladığımız fonksiyonu yapmaya devam etti.

Sonuç olarak uygulamanızın performansını arttırmak ve mümkün olduğunca işlemlerimizi kısa bir sürede tamamlanmasını istiyorsanız yeni Isolate’ler oluşturarak işlemler yapabiliriz.

Buraya kadar harcadığınız vakitten ve emekten dolayı çok teşekkür ediyorum. Yazıyla alakalı herhangi bir sorunuz veya benim yanlış, eksik söylediğim taraflar var ise bana aşagıdaki linkler üzerinden ulaşabilirsiniz. Umarım bu yazım ile sizlere bir şeyler katabilmişimdir 😊

Kullanabileceğiniz Paketler:

KAYNAKLAR

https://www.youtube.com/c/HardwareAndro/featured Veli Bacık

https://hackernoon.com/an-introduction-to-dart-code-and-isolate-em3j34u1

https://dart.dev/guides/language/concurrency

https://mertmekatronik.com/thread-ve-multithread-nedir#:~:text=Single Thread%3A,Boşta kalma süresi daha fazladır.

İletişim:

LinkedIn: https://www.linkedin.com/in/ozsemih/

Github: https://github.com/smhoz

Twitter: https://twitter.com/smh_oz

--

--

Semih

Computer Engineering Student, Freelance Jr. Flutter Developer